문제 자체가 어려운 것 보다도
1157번처럼 문제가 되는 부분을 찾아내는 게 조금 어려웠다
이 문제에서는 반례에 해당하는 부분, 즉, 이 프로그램이 정상적으로 작동하지 못하게 하는 입력을 찾아서
그 부분을 빼내 줄 수 있어야 한다
마지막 if 문에서 등장하는 (strlen(str) != 1) || (str[0] != ' ') 부분이 그런 부분인데
그 부분 없이 문제를 작성하면 모든 경우에 잘 작동하지만
단 하나, 공백만 입력되어 전체 단어의 개수가 0일때에도 1로 잘못 출력을 하게 된다
그 부분을 고치고 문제가 통과되었다.
#include <stdio.h>
#include <string.h>
int main()
{
char str[1000001] = "";
int num = 0;
while (scanf("%[ AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz]", str) != 1) continue;
int len = strlen(str);
for (int k = 0; k < len; k++)
{
if (str[k] == ' ' && ((k != 0) && (k != len - 1)))
num++;
}
if ( (strlen(str) != 1) || (str[0] != ' ') )
num++;
printf("%d", num);
}