백준 웹사이트 "10951번 - A+B - 4" 문제풀이입니다.
언어는 C언어입니다. (제출 언어: C99)
문제
소스 코드
#include <stdio.h>
int main(void){
int A, B;
while(1){
if(scanf("%d %d", &A, &B) == EOF) // EOF는 입력의 종료를 의미. 'Ctrl+Z (^Z)'로 시행
break;
else
printf("%d\n", A+B);
}
}
문제 풀이
어렵지 않은 것을 묻는 문제임에도 불구하고, 35.398% (2021.12.29 기준)의 낮은 정답률을 보이는 문제입니다. 그 이유는 아마 'EOF (End of File)' 때문일텐데요, EOF는 영어 뜻 그대로 File의 종료, 즉 입력의 종료를 의미합니다.
이 문제에서, 저희는 입력되는 값들을 계속하서 처리하다가, 입력이 종료되면 while문의 밖으로 빠져나오게끔 하고 싶습니다. 10952번에서 while(1)은 break를 만날 때까지 계속해서 도는 코드라고 했었죠? 입력값을 확인하고 만약 입력된 것이 없다면 (즉, 입력의 종료 EOF가 들어왔다면) break를, 입력된 것이 있다면 printf를 시행하도록 합니다. 전체적인 코드는 10952번 문제와 비슷하지만, 입력을 받는 시점과 Line 7 if문의 조건 부분이 다릅니다.
C언어로 코드를 작성한 후, 제출하기 전에 실행해보고, 예제 입력에 대한 출력을 확인해보죠? 이때, terminal에 직접 입력을 넣어줄 때는 EOF가 따로 없습니다. 따라서 입력이 종료될 때 코드가 정상적으로 멈추는지 확인해보기 위해서는 EOF를 따로 명령합니다. Windows의 terminal에서 EOF는 보통 'Ctrl+Z (^Z)'로 명령하므로, 이를 입력해보고 코드가 정상적으로 종료되는지 확인해보면 됩니다! (Linux와 Unix terminal에서는 'Ctrl+D (^D)'로 EOF를 명령합니다)
아래는 백준 웹사이트 "10952번 - A+B - 5" 문제풀이 링크입니다.
'코딩 > 백준 BOJ' 카테고리의 다른 글
[백준/C언어] 10818번 - 최소, 최대 (3) | 2021.12.30 |
---|---|
[백준/C언어] 1110번 - 더하기 사이클 (0) | 2021.12.29 |
[백준/C언어] 10952번 - A+B - 5 (0) | 2021.12.29 |
[백준/C언어] 10871번 - X보다 작은 수 (0) | 2021.12.28 |
[백준/C언어] 2439번 - 별 찍기 - 2 (0) | 2021.12.28 |