BOJ | Bronze | 10951번 A+B - 4
문제
https://www.acmicpc.net/problem/10951
10951번: A+B - 4
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
- 두 정수
A
와B
를 입력 A + B
를 출력- 테스트 케이스의 반복 개수는 정해져 있지 않음
코드
while True:
try:
a, b = map(int, input().split())
print(a+b)
except:
break
풀이
일반적인 덧셈 문제와 마찬가지로, 두 수를 입력 받고 더해서 출력하면 해결할 수 있는 문제이다. 하지만 이 문제의 핵심은 테스트 케이스의 반복 개수가 정해져 있지 않다는 것이다. 따라서 이 문제는 while
을 이용한 무한루프와 EOF(end of file)를 이용하여 문제를 해결해야 한다.
- 반복하는 횟수가 정해져 있지 않기 때문에 EOF를 이용
while
문을 이용하여 무한루프로 구현try - except
구문을 이용하여EOFError
를 처리try
문에서는 정상적으로 입력이 들어오는 경우, 입력과 출력을 담당함except
문에서는EOFError
가 발생하는 경우 반복문을 중단할 수 있도록break
처리
EOF(End Of File) for Python
EOF는 end of file의 약자로, 파일의 끝을 의미한다. 파일의 끝이라는 것은 더 이상 가져올 데이터가 없다는 의미이며, 데이터의 마지막이라는 의미도 된다. 이 EOF를 이용하면 입력이 끝날 때까지 계속 데이터를 받아올 수 있다.
백준의 10951번 문제와 같이 테스트 케이스의 개수를 주지 않거나 별도의 종료 조건을 주지 않을 때, EOF를 이용하여 문제를 해결할 수 있다.
파이썬에서는 while
문과 try - except
구문을 이용하여 구현할 수 있다. 데이터를 정상적으로 입력을 받을 때에는 try
문의 내용을 실행하며, 입력값이 없어(데이터가 없어) 예외가 발생(EOFError
)하면 except
문의 내용이 실행된다. (EOF를 구현하는 방법은 각 언어마다 차이가 있다.)
while True:
try:
a = input()
print(a)
except:
print("EOF Error 발생")
break
윈도우에서 EOF를 넘겨주기 위해서는 ctrl + z
를 이용하면 된다. 위 코드는 윈도우에서 ctrl + z
가 입력되기 전까지 무한히 반복하며 입력 값을 받고 출력해주는 코드가 된다.
'Problem Solving > BOJ' 카테고리의 다른 글
BOJ | 파이썬 | Sliver | 18110번 solved.ac (with. round 함수 사용으로 인한 문제) (0) | 2024.05.06 |
---|---|
BOJ | 파이썬 | Sliver | 4949번 균형잡힌 세상 (with. input과 sys.stdin.readline의 차이) (0) | 2024.04.12 |
BOJ | 파이썬 | Sliver | 2164번 카드2 (feat. 2161번 카드1) (0) | 2024.04.08 |
BOJ | 파이썬 | Sliver | 10815번 숫자 카드 (0) | 2024.04.05 |
BOJ | 파이썬 | Sliver | 1920번 수 찾기 (with. 이진 탐색 알고리즘) (0) | 2024.04.05 |