PS/Baekjoon Online Judge

[백준 1152] 단어의 개수 [C]

kimyoungrok 2021. 7. 9. 17:40

백준 - 1152


풀이

다른 언어에 비해 문자열에 관한 문제는 문제의 난이도에 비해 C로 풀이하기 힘든만큼 꼭 C를 고집할 필요는 없다.

 

C언어로는 단어의 개수를 세는 방식이 아닌, 공백의 개수를 세고, 경우의 수를 따지는 방식이 더 효율적인 듯 하다.

  • 엔터를 입력할 때 까지 계속 입력받는다.
  • 공백 하나만 입력되는 경우도 고려해야한다.
  • 마지막 단어 뒤에 공백이 있거나 없을 수 있어서 len - 1로 맨 끝의 공백이나, 단어의 맨 뒤를 고려하지 않는다.

소스코드

#include <stdio.h>
#include <string.h>
int main(){
    char str[1000001];
    gets(str);
    int cnt = 0, len = strlen(str);
    
    if (len == 1 && str[0] == ' '){
        cnt = -1;
    }else 
        for(int i = 1; i < len-1; i++)
            if(str[i] == ' ')
                cnt++;
    printf("%d\n", cnt+1);
}

출처

 

1152번: 단어의 개수

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

www.acmicpc.net

 

'PS > Baekjoon Online Judge' 카테고리의 다른 글

[백준 1330] 두 수 비교하기 [C]  (0) 2021.07.09
[백준 1157] 단어공부 [C]  (0) 2021.07.09
[백준 1008] A/B [C]  (0) 2021.07.09
[백준 1001] A-B [C]  (0) 2021.07.09
[백준 1000] A+B [C]  (0) 2021.07.09