시간 초과 질문

panda251 Reply 7 years 34 weeks ago
#include <stdio.h> main() { int a, b, c, sp, tb, nl; a = b = c = 0; sp = tb = nl = 0; while ((a == getchar()) != EOF) if (a == ' ') ++sp; printf("%d\n", sp); while ((b == getchar()) != EOF) if (b == '\t') ++tb; printf("%d\n", tb); while ((c == getchar()) != EOF) if (c == '\n') ++nl; printf("%d\n", nl); } 로 제출을 했더니 시간 초과라고 떴습니다. 버그는 없다고 뜨는데, 사실 제 비주얼 스튜디오에서도 어째서인지 값이 출력이 되지 않아서 뭐가 문제인지 잘 모르겠습니다.
withcs1 Reply 7 years 34 weeks ago
getchar()함수는 문자하나를 입력받는 함수입니다. while ((a == getchar()) != EOF) 이 부분은 getchar()함수를 불러와 a에 대입하여, EOF이 아닌지를 판별 한 후, 참이면 while문을 돌립니다. 즉, EOF를 받을때까지 while문 내를 반복하여 실행합니다.. 세개의 while문 모두 문자를 입력받으려고 할겁니다. 문제에서 문자열은 EOF로 끝나므로, EOF를 받아 첫번째 while문을 탈출하면 두번째 while문으로 진입하면서, 문자입력을 기다리는 상태가 되겠네요. 근데 더이상 받을문자가 없으니 계속 대기상태로 있게됩니다.