백준 1152번

CharliePark·2020년 9월 26일
0

TIL

목록 보기
48/67

BOJ 1152 : 단어의 개수

문제 자체가 어려운 것 보다도

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);
}

0개의 댓글