코젤브

[C++] 백준 10951번 : A+B-4 본문

컴공의 일상/백준 문제

[C++] 백준 10951번 : A+B-4

코딩하는 젤리 2024. 6. 18. 19:11

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

 

전체 코드

// class1
// 백준 10951번 : A+B-4
#include <iostream>
using namespace std;

int main()
{
    int A, B;
    // 방법 1 : scanf와 EOF 활용
    while (scanf("%d %d", &A, &B) != EOF) {
        printf("%d\n", A + B);
    }

    // 방법 2 : scanf함수의 리턴값 활용
    while (scanf("%d %d", &A, &B) == 2) // 읽어드린 입력 개수 반환
        printf("%d\n", A + B);

    // 방법 3 : cin과 eof() 사용
    while (!(cin >> A >> B).eof()) {	// 혹은 eof() 대신 fail()을 사용해도 된다.
        cout << A + B << "\n";
    }

    // 방법 4 : cin 조건식에서 bool 값 반환
    while (cin >> A >> B) {
        cout << A + B << "\n";
    }

    return 0;
}

 

EOF에 대해 알고 있어야 하는 문제.

정말 다양하게 해결할 수 있다.


1. scanf와 EOF 활용

이 방법은 scanf 함수와 EOF(End Of File)를 활용하여 입력의 끝을 확인하는 방식이다.

  • scanf 함수는 성공적으로 입력을 읽어들이면 읽어들인 항목의 개수를 반환하며,
    입력의 끝에 도달하면 EOF를 반환한다.
  • while (scanf("%d %d", &A, &B) != EOF)는 입력이 계속 들어오는 동안 반복문을 실행한다.
  • 입력이 성공적으로 읽어들여진 경우, A + B의 결과를 출력한다.

2. scanf 함수의 리턴값 활용

이 방법은 scanf 함수의 리턴값을 활용하여 입력이 정상적으로 읽어들여졌는지 확인하는 방식이다.

  • scanf 함수는 성공적으로 읽어들인 항목의 개수를 반환한다.
  • while (scanf("%d %d", &A, &B) == 2)는 두 개의 정수를 정상적으로 읽어들였는지 확인하여 반복문을 실행한다.
  • 입력이 성공적으로 읽어들여진 경우, A + B의 결과를 출력한다.

3. cin과 eof() 사용

이 방법은 C++의 cin 스트림과 eof() 함수를 사용하여 입력의 끝을 확인하는 방식이다.

  • cin.eof()는 입력 스트림이 파일의 끝에 도달했는지 확인한다.
  • while (!(cin >> A >> B).eof())는 입력 스트림이 파일의 끝에 도달하지 않았는 동안 반복문을 실행한다.
  • 입력이 성공적으로 읽어들여진 경우, A + B의 결과를 출력한다.

4. cin 조건식에서 bool 값 반환

이 방법은 C++의 cin 스트림을 조건식에서 사용하여 입력이 성공적으로 읽어들여졌는지 확인하는 방식이다.

  • cin은 입력이 성공적으로 읽어들여지면 true를, 실패하면 false를 반환한다.
  • while (cin >> A >> B)는 입력이 성공적으로 읽어들여지는 동안 반복문을 실행한다.
  • 입력이 성공적으로 읽어들여진 경우, A + B의 결과를 출력한다.

요약

  • 방법 1: scanf와 EOF를 활용하여, 입력의 끝 확인
  • 방법 2: scanf 함수의 반환값을 활용하여, 입력의 성공 여부 확인
  • 방법 3: cin 스트림과 eof() 함수를 사용하여, 입력의 끝 확인
  • 방법 4: cin 스트림을 조건식에서 사용하여, 입력의 성공 여부 확인

 


4가지 다 정답이다.