목록백준 문제 풀이/c언어 (16)
프로그래머 대학생의 노트
이 문제는 입력받은 문자열을 길이가 짧은 것부터, 길이가 같은 경우에는 사전 순으로 앞에 있는 것부터 출력하는 문제입니다. 우선, 문자열을 입력받은 후, 각 문자열의 길이와 문자열 자체를 저장해야 합니다. 이를 위해 구조체를 사용할 수 있습니다. 구조체는 여러 개의 변수를 묶어서 하나의 자료형으로 만들어주는 것입니다. 따라서, 길이와 문자열을 각각 변수로 만들어 구조체로 묶어주면 편리하게 처리할 수 있습니다.입력받은 문자열을 구조체 배열에 저장한 후, 구조체 배열을 정렬하여 출력합니다. 이때, 정렬 기준은 먼저 문자열의 길이를 기준으로 정렬하고, 길이가 같은 경우에는 문자열의 사전 순으로 정렬합니다. 문제를 풀면 아래 코드가 나옵니다.C 언어로 풀었습니다 #include #include #include ..
이 문제는 단어의 개수를 세는 문제입니다. 우선, 문장을 입력받기 위해서는 scanf 함수를 사용합니다. 그리고 입력받은 문자열을 공백으로 구분하여 단어의 개수를 셉니다. 이때, 단어를 구분하는 공백이 여러 개인 경우를 처리하기 위해서, 공백이 아닌 문자가 나올 때마다 word_count 변수를 증가시켜 줍니다. 문제를 풀면 아래 코드가 나옵니다. #include int main() { char c; int word_count = 0; int is_word = 0; while (scanf("%c", &c) == 1) { if (c == ' ' || c == '\n') { is_word = 0; } else if (!is_word) { is_word = 1; word_count++; } } printf("..
문제를 간단히 설명하면, 알파벳 대소문자로 이루어진 단어가 주어졌을 때, 가장 많이 사용된 알파벳을 대문자로 출력하는 문제입니다. 문제를 풀면 아래 코드가 나옵니다. 1. #include #include int main() { char word[1000001]; int count[26] = {0,}; int max_count = 0, max_index = 0; int i; scanf("%s", word); for (i = 0; word[i] != 'NULL'; i++) { int index = toupper(word[i]) - 'A'; count[index]++; } for (i = 0; i max_count) { max_count = count[i]; ..
문제를 간단히 설명하면, 문자열이 주어졌을 때, 이 문자열에서 단어의 개수를 구하는 문제입니다. 문제를 풀면 아래 코드가 나옵니다. #include int main() { char str[1000000]; int i, cnt = 0; fgets(str, 1000000, stdin); // 단어의 개수 계산 for (i = 0; str[i] != '\0'; i++) { if (str[i] != ' ' && str[i] != '\n') { if (i == 0 || str[i-1] == ' ' || str[i-1] == '\n') { cnt++; } } } printf("%d\n", cnt); return 0; }위 코드에서 str은 입력..
문제를 간단히 설명하면, M x N 크기의 보드가 주어졌을 때, 체스판처럼 칠해진 부분과 다른 색으로 칠해진 부분을 반복해서 칠해야 할 때, 다시 칠해야 하는 정사각형의 최소 개수를 구하는 문제입니다. 문제를 풀면 아래 코드가 나옵니다. #include #include char board[50][50]; int check_board(int row, int col) { int i, j, count1 = 0, count2 = 0; char color1 = 'W', color2 = 'B'; // (row, col)이 W로 시작하는 체스판과 비교 for (i = row; i < row + 8; i++) { for (j = col; j < col + 8; j++) { if (board[i][j] != color1..
문제를 간단히 설명하면, 두 정수 A와 B를 입력받아 A/B를 출력하는 문제입니다. 이 문제를 블로그에 올리는 형식으로 C 언어로 풀어보겠습니다. 먼저, 기본적인 입력과 출력을 위해 stdio.h 라이브러리를 사용하겠습니다. #include int main() { double A, B; scanf("%lf %lf", &A, &B); printf("%.9lf\n", A / B); return 0; } 위 코드에서 A와 B는 입력받는 두 실수를 나타냅니다. scanf 함수를 사용하여 A와 B를 입력받습니다. 그리고 printf 함수를 사용하여 A / B의 값을 출력합니다. 출력할 때는 소수점 아래 9자리까지 출력하도록 지정해야 합니다. 이로써 "A/B" 문제에 대한 C 언어로 작성된 해설을 작성해보았습니다.
문제를 간단히 설명하면, 주어진 정수를 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 문제입니다. 문제를 풀면 아래 코드가 나옵니다. #include int main() { int T; // 테스트 케이스의 수 scanf("%d", &T); while (T--) { int n; // 1, 2, 3의 합으로 나타내고자 하는 수 scanf("%d", &n); int dp[11] = {0, 1, 2, 4}; // DP 배열 초기화 for (int i = 4; i