728x90
단계별로 풀어보기 - while문 - [2단계] 10951번
문제
문제 링크 : www.acmicpc.net/problem/10951
입력 복사 :
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
'Baekjoon > 단계별로 풀어보기' 카테고리의 다른 글
[BOJ/백준] 10818번 최소, 최대 C++ 문제 풀이 (0) | 2020.09.21 |
---|---|
[BOJ/백준] 1110번 더하기 사이클 C++ 문제 풀이 (0) | 2020.09.21 |
[BOJ/백준] 10952번 A+B - 5 C++ 문제 풀이 (0) | 2020.09.21 |
[BOJ/백준] 10871번 X보다 작은 수 C++ 문제 풀이 (0) | 2020.09.21 |
[BOJ/백준] 2439번 별 찍기 - 2 C++ 문제 풀이 (0) | 2020.09.21 |