📖 APS/BOJ

[APS][C++] BOJ B5 10951번 A+B - 4 (feat. EOF)

청월누리 2025. 1. 28. 15:27

https://www.acmicpc.net/problem/10951


문제

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

입력

  • 입력은 여러 개의 테스트 케이스로 이루어져 있다.
  • 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)

출력

  • 각 테스트 케이스마다 A+B를 출력한다.

풀이

정수 a와 b를 입력 받고, 두 정수를 더한 수를 출력해주면 되는 간단한 문제이다.

  • 단, 테스트 케이스의 개수와 종료 조건이 정해지지 않았다는 점을 주의! >> EOF(End of File)를 사용하라는 의미
  • 콘솔 창에서 EOF는 수동으로 넣어줘야 하는데, 윈도우 기준 ctrl+z

코드

#include <iostream>
using namespace std;

int main() {
  while (true) {
    int a, b;
    cin >> a >> b;

    if (cin.eof()) {
      break;
    }

    cout << a + b << "\n";
  }

  return 0;
}

결과


오답 원인

  • 무한 반복(while (true))으로 풀이 >> 출력 초과 발생 >> while (!cin.eof())로 변경 후 제출
  • while (!cin.eof())의 경우 마지막 출력 값이 한 번 더 출력되는 문제 발생 >> cin.eof() == true일 때, 반복문을 종료(break;)하는 방식으로 풀이
    • cin.eof()의 경우, EOF가 발생하면 true를 반환