본문 바로가기
BOJ

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

by 야호호코코 2018. 7. 2.
반응형

 백준에 단계별로 풀어보기 - 1차원 배열 사용하기에 있는 1번째 문제인 단어의 개수 문제는 이상하리 만큼 정답 비율이 낮다. 나도 예전에 풀었던 흔적이 있는데, 가차없이 틀렸다.. 10번정도.. 


 그동안 풀었던 모든 코드에는 간과한 경우가 두 가지 있는데, 첫 번째는 처음 나오는 공백, 두 번째는 마지막에 나오는 공백이었다.


 그래서 방식을 바로 전 인덱스에서 읽어낸 문자가 공백인지를 판단하는 변수를 따로둬서 연속된 공백이 포함된 문장도 처리할 수 있도록 했다. 


 바로 전 인덱스에서 공백이고, 현 인덱스에서 문자이면 새로운 단어가 나타난 것이다. 그 때 단어의 개수를 증가시킨다. 단, 문장의 처음은 공백이 없을 수도 있으므로 공백이었는지를 판별하는 isSpace를 1(공백이 나옴)로 초기화한다.


  

#include <stdio.h> int main() { char str[1000000]; int count = 0; int i; int isSpace = 1; scanf("%[^\n]s", str); for (i = 0; str[i]; i++) { if (str[i] == ' ') isSpace = 1; else if(isSpace) { isSpace = 0; count++; } } printf("%d", count); return 0; }


반응형