본문 바로가기

Coding/백준 온라인 저지 (Baekjoon Online Judge)

백준 온라인 저지 (Baekjoon Online Judge) - 1152: 단어의 개수

https://www.acmicpc.net/problem/1152

 

1152번: 단어의 개수

첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열의 앞과 뒤에는 공백이 있을 수도 있다.

www.acmicpc.net

#include <stdio.h>
#define MAX 1000001 // 문장의 길이(1000000) + 1 (널문자)

int main(int argc, char* argv[]){
    
    char str[MAX]; // 입력받은 문자열 저장
    int num = 1; // 단어 갯수
    int i = 0;
    
    gets(str); // 띄어쓰기 포함해서 받기 위해서 gets() 사용
    
    while(str[i] != '\0'){
        if (str[i] == ' ' && str[i+1] != '\0') // 문장 맨뒤에 띄어쓰기 할 경우를 방지
            num++;
        i++;
    }
    
    if (str[0] == '\0' || str[0] == ' ') // 아무것도 입력하지 않거나 맨 앞에 공백을 입력한 경우
        num--;
    printf("%d\n", num);
    
    return 0;
}