문제
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력
입력은 여러 개의 테스트 케이스로 이루어져 있다.
각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
출력
각 테스트 케이스마다 A+B를 출력한다.
얼핏 보면 굉장히 간단한 문제다.
입력이
1 2
3 4
5 6
라고 주어지면, "3 7 11"을 출력하면 되는 것이다.
그런데 의문스러운 부분이 있다. 이렇게 간단한 문제인데 정답 비율이 30%대이다. 이것은 어딘가 함정이 숨어져 있다는 것이다.
그래서 코딩을 시작하는데, 난관이 존재했다. 입력을 while문이나 for문같은 반복문으로 받을건데, "입력을 몇 번 받는지" 알 수 없다. 문제에서도 "여러 개의 테스트 케이스로 이루어져 있다."라고만 언급했다.
아, EOF를 사용하는 문제구나!
이것이 이 문제의 포인트다.
EOF란, 파일입출력에서 사용하는 용어로 End Of File 즉, "파일의 끝"을 의미한다.
어떻게 보면 우리가 Visual Studio나 Dev C++로 코딩한 후 컴파일한 콘솔 창에 값을 입력하는 것도 하나의 텍스트 파일이라고 할 수 있다. 물론 우리가 쓰는 콘솔창은 Ctrl+Z(^Z)를 입력하는 것이 EOF를 의미한다.
C에서는 EOF라는 상수가 존재하고, C++에서는 cin.eof()를 사용해서 EOF를 쓴다. 이 때 cin.eof()는 boolean의 값을 반환한다.(파일의 끝이라면 true 반환)
이것만 알면 코드는 금방 짠다. 다음과 같다.
#include <iostream>
using namespace std;
int main(void)
{
int a,b;
while(1)
{
cin >> a >> b;
if(cin.eof())
break;
cout << a+b << endl;
}
return 0;
}
입력의 개수가 정해지지 않은 문제는 EOF의 개념을 모른다면 당황스러울 수 있다.
코딩 테스트에서 간간히 나온다고 하니 까먹지말자!
Coding Space by MIR :
Beakjoon Online Judge 10951번 A+B-4 C++
BOJ 10951번 A+B-4 C++
백준 10951번 A+B-4 C++
'Beakjoon > C++' 카테고리의 다른 글
[Beakjoon Online Judge] 11047- 동전 0(C++) (0) | 2020.12.17 |
---|---|
[Beakjoon Online Judge] 2869 - 달팽이는 올라가고 싶다(C++) (0) | 2020.12.08 |
[Beakjoon Online Judge] 1850 - 최대공약수(C++) (0) | 2020.12.07 |
[Beakjoon Online Judge] 1094 - 막대기(C++) (0) | 2020.12.02 |
[Beakjoon Online Judge] 1074 - Z(C++) (0) | 2020.11.30 |