본문 바로가기
Algorithm

[백준 BOJ] 10951번 A+B - 4

by Jamie Lim 2020. 9. 8.

문제

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

 

10951번: A+B - 4

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

www.acmicpc.net

 

입력

입력은 여러 개의 테스트 케이스로 이루어져 있다.

각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)

 

출력

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

 

예제 입출력

예제 입력 예제 출력
1    1
2    3
3    4
9    8
5    2
2
5
7
17
7

 

풀이

얼마나 입력하는지 알 수 없는 문제는 값이 더 이상 입력하지 않을 때까지 계속 반복을 하며 두 변수를 더한 값을 출력해 준다. 그리고 더 이상 값을 입력하지 않으면 종료해 준다.
이럴 때 사용하는 문법이 EOF이다.

 

EOF란?

모든 파일의 끝엔 우리가 볼 수는 없지만 EOF 표시가 모두 붙어있다. End Of File이라는 뜻으로 파일의 끝을 표현하기 위해 정의한 상수(-1)이다. fgetc이나 getchar 등의 함수가 파일의 끝에 도달하거나 Ctrl+Z 후 Enter로 종료할 때 반환한다.

C언어의 경우 scanf()를 통해 EOF를 읽을 수 있고 C++의 경우 cin.eof()라는 함수를 사용해 EOF가 읽히는지 확인해야 한다. 이때, ture라면 EOF가 입력된 것으로 반복문을 탈출해야 한다. Python의 경우엔 EOF는 하나의 에러로 try~except를 사용해 except로 예외(EOF)를 잡았을 때 반복문을 종료시켜줄 수 있다.

 

C

#include <stdio.h>

int main() {
	int a, b;

	while (scanf("%d %d", &a, &b) != EOF) {  // 입력하면 반복문 실행
		printf("%d\n", a + b);
	}
}

 

C++

#include <iostream>
using namespace std;

int main() {
	int a, b;

	while (1) {
		cin >> a >> b;  
		if (cin.eof() == true)  // 입력한 값이 없다면 반복문 탈출
			break;

		cout << a + b << endl;
	}
}

 

Python

while True:
    try:      # 예외가 발생하지 않으면 아래 코드 실행
        a, b = map(int, input().split())
        print(a + b)

    except:  # 예외(EOF)가 발생하면 반복문 탈출
        break

 

기억해야 할 Python 문법

* input으로 값을 2개 이상 받을 때 입력받은 값을 int로 강제 형변환 하면 에러가 발생하므로 대신 map을 이용한다.

a, b = int(input().split())

 

댓글