알고리즘

백준 Python 입력, 출력 시 유의사항

hannn 2023. 1. 11. 19:43

백준 문제를 Python3로 풀면서 입력으로 인해서 시간 초과가 나오는 경우가 많아 

어떻게 입력을 받아야 하는지에 대해서 정리를 해보았다. 

 

input( )

가장 일반적으로 입력을 받을 때 사용하는 함수로, 이 함수를 쓰게 되면 백준에서는 시간 초과가 빈번하게 일어난다. 

 

 

sys.stdin.readline( )

input( ) 함수보다 조금 더 빠르게 입력을 받기 위해서는 다음의 함수를 쓰는 것이 좋다. 

함수의 이름을 보면 알 수 있듯이 위의 함수를 사용하기 전에는 import sys를 써서 sys 라이브러리를 임포트 해주는 것이 우선이다. 추가적으로, 입력 후 엔터가 같이 입력되어 오른쪽 끝에 '\n'이 같이 입력에 포함되는 경우가 발생하는 데, 이를 없애기 위해서 strip( ) (혹은 rstrip( ) ) 함수를 사용한다. 

 

예시

import sys

num = int(sys.stdin.readline())
a = [sys.stdin.readline().strip() for i in range(num)]
print(a)

 

 

추가적으로, 대부분의 문제에서는 몇번을 입력받을 것인지가 가장 처음 입력으로 주어지지만, 입력의 개수가 제공되지 않는 문제들이 종종 있다. 이런 경우에는 EOF까지 입력을 받아서 EOF인 경우에는 더이상 입력을 받지 않는다는 코드 try, except를 사용하여 다음과 같이 작성하면 된다. 

while True:
    try:
    	a, b = map(int, input().split())
        print(a + b) 
    except:
    	break

try, except 처리문은 예외로 인해서 오류가 발생하더라도 코드 실행이 멈춰지지 않는다. 

 

 

Reference : 

https://paris-in-the-rain.tistory.com/72

https://jjluveeecom.tistory.com/30

https://inhyeokyoo.github.io/algorithm/stdin/