지금까지 알고리즘 문제를 풀 때 한 언어만 사용하지 않고 이것 저것 썼었는데 당분간은 파이썬으로 풀기로 했다. 파이썬을 풀며 당황스러웠던..? 잘 몰랐던 입력 관련 내용을 정리 해보려 한다.
이 문제는 출력은 단순한데 출력값을 잘 내는것이 핵심이 아니다. 핵심은 시간초과 없이 입력을 받아 결과를 내는 데에 있다.
지금까지는 입력을 받기 위해 input() 함수를 사용해도 문제가 없었다.
반복문으로 여러 줄을 입력 받아야 할 때 input()으로 받는다면 시간 초과가 발생할 수 있다.
이러한 상황에서는 sys.stdin.readline()을 사용할 수 있다.
import sys
temp = sys.stdin.readline()
print(temp) # "Hello, World!\n"
이 문제 또한 출력값을 잘 내는 것이 핵심이 아니다. 핵심은 파일의 끝(EOF)을 올바르게 판단하는 데 있다.
생각해보니 나는 파이썬으로 코딩을 하며 EOF를 신경써본 경험이 없었다.
백준의 질문 게시판과 여러 블로그를 참고한 결과 두 가지 방법을 사용할 수 있음을 알게 되었다.
while True:
try:
A = int(input())
print(A)
#EOFError를 생략해도 except만 있으면 넘어감
except :
break
import sys
while True:
# 보다시피 sys 라이브러리의 함수라서 import sys를 해야함.
temp = sys.stdin.readline()
if temp == "":
break
else:
temp = int(temp)
print(temp)
Python sys.stdin.readline() 사용 / 알고리즘 입력 받기
★☆★☆★ [필독] A+B - 4 FAQ ★☆★☆★
파이썬에서 EOF 입력처리