본문 바로가기

백준 문제 풀이/c언어

백준 1152 C언어 문제 풀이 - 단어의 개수

문제를 간단히 설명하면, 문자열이 주어졌을 때, 이 문자열에서 단어의 개수를 구하는 문제입니다.

문제를 풀면 아래 코드가 나옵니다.

#include <stdio.h>

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은 입력받은 문자열을 나타내는 문자열입니다. fgets 함수를 이용해 문자열을 입력받은 후에, for문을 이용하여 단어의 개수를 계산합니다. 만약 문자열의 i번째 문자가 공백이나 개행 문자가 아니면서, 그 앞 문자가 공백이나 개행 문자라면 새로운 단어가 시작된 것이므로 cnt를 1 증가시킵니다. 마지막으로, cnt를 출력합니다.

주의할 점은, 문자열의 길이가 최대 1,000,000이므로 'fgets 함수를 이용하여 입력을 받아야 합니다. 이를테면 gets 함수는 사용하지 않도록 합니다.