문제
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력
입력은 여러 개의 테스트 케이스로 이루어져 있다.
각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 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())
'Algorithm' 카테고리의 다른 글
[백준 BOJ] 15721번 번데기 (0) | 2020.10.11 |
---|---|
[백준 BOJ] 17249번 태보태보 총난타 (0) | 2020.10.11 |
[백준 BOJ] 14645번 와이버스 부릉부릉 (0) | 2020.10.11 |
[백준 BOJ] 2839번 설탕 배달 (0) | 2020.09.06 |
[백준 BOJ] 1110번 더하기 사이클 (0) | 2020.09.05 |
댓글