Baekjoon/단계별로 풀어보기

[BOJ/백준] 10951번 A+B - 4 C++ 문제 풀이

728x90

단계별로 풀어보기 - while문 - [2단계] 10951번

문제

문제 링크 : www.acmicpc.net/problem/10951

 

10951번: A+B - 4

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

입력 복사 : 

1 1 2 3 3 4 9 8 5 2

풀이

간단하게 생각하여 다음과 같이 코드를 작성하면 '출력 초과' 결과가 뜬다.

int a, b;
	while (1) {
		cin >> a >> b;
		cout << a + b << '\n';
	}

종료 조건을 주지 않았기 때문이다.

이 문제를 풀기 위해선 EOF(End Of File)에 대해 알 필요가 있다.

EOF(End Of File)은 파일의 끝을 알리는 함수로 -1의 값을 가지며, 콘솔 창에서는 Ctrl+Z가 EOF를 의미한다.

C++에서는 cin.eof()함수가 bool타입을 가지며 EOF를 읽으면 true값으로 바뀌게 된다.

또한, while문의 조건 안에 cin함수를 직접 넣어 정상적인 입력이 아닐 시 자동적으로 종료되게 할 수도 있다.

 

CODE

#include <iostream>
using namespace std;
 
int main(void) {
   int a,b;
 
   while(true) {
       cin >> a >> b;
       if(cin.eof() == true) {
           break;
       }
       cout << a + b << endl;
   }
}
#include <iostream>
using namespace std;
int main()
{
	int a, b;
	while (cin >> a >> b) {
		cout << a + b << endl;
	}
}

 

결과

728x90