[Python] EOF
EOF
백준 홈페이지에서 문제를 단계별로 풀다보면 10951번, A+B -4번 문제를 만날 수 있다. 이 문제를 보면 이전의 문제들과는 다른데, 바로 테스트 케이스의 개수가 없다. 즉 언제 끝나야하는가?를 명시하지않았다. 이 때 필요한 개념은 EOF인데, End Of File이라는 뜻으로 파일의 끝이라는 뜻을 가지고 있다. 파일의 끝이라는 말은 쉽게 말해서 프로그램의 끝, 즉 종료를 말한다고 생각하면 된다.
백준 10951번을 예로 들어보자.
문제
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력
입력은 여러 개의 테스트 케이스로 이루어져 있다.
각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
출력
각 테스트 케이스마다 A+B를 출력한다.
1
2
3
while 1:
A, B = map(int, input().split(" "))
print(A + B)
파이썬을 조금 공부해 본 사람이라면 쉽게 이런 코드를 작성할 수 있다. 하지만 이 문제에는 함정이 있는데, 바로 프로그램의 종료 시점을 정확하게 알려주지않았다. 테스트 케이스의 개수라던가, 반복문의 종료라던가 프로그램이 모든 명령을 처리하면 프로그램은 자동으로 종료되어야하는데, while 1
구문덕분에 프로그램은 끝나지않고 무한히 A, B
를 입력받고 A + B
를 출력하기에 이른다.
이 때 필요한 것이 EOF
를 명시해주는것이다. 실제로 백준에 문제를 저대로 제출하면 EOFError
라는 런타임 에러를 뱉고 정답풀이에 실패하게된다. try ~ except
구문으로 런타임 에러가 발생했을 때 반복문을 탈출하는 식으로 코드를 구성하면 된다.
1
2
3
4
5
6
while 1:
try:
A, B = map(int, input().split(" "))
print(A + B)
except:
break
댓글남기기