반응형
백준에 단계별로 풀어보기 - 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; }
반응형
'BOJ' 카테고리의 다른 글
[C] 백준 2941번 크로아티아 알파벳 (0) | 2018.07.05 |
---|---|
[C++] 백준 1929번 소수 구하기 (에라토스테네스의 채) (0) | 2018.07.04 |
[C] 백준 1157번 단어 공부 (0) | 2018.07.03 |