백준에서 PS를 하다가, 15552번 문제를 풀게 됐다. C로 풀었을 때는 큰 문제가 발생하지 않았지만, 문제 설명을 읽어보니 python에서 기본적으로 사용하는 input()을 사용하면 시간 제한을 초과할 것 같았다. 그래서 문제에서 제시하는 sys.stdin.readline을 사용했는데, 두 함수의 작동방식과 그 성능차이가 궁금해서 documentation과 질의응답을 찾아봤다.

input()

input함수는 개행문자를 읽은 뒤 삭제하여 변수에 저장한다. 또한, propmpt argument가 input 함수에 함께 선언된 경우 이를 standard output에 반환한 후 역할을 수행한다.

sys.stdin.readline()

[sys.stdin.readline]함수는 rstrip()과 같은 별도의 함수를 실행시키지 않는 한, 개행문자를 삭제하지 않고 포함하여 변수에 저장한다. 또한, prompt argument를 지정하지 않는다.

두 함수의 차이점

  • 따라서, input()sys.stdin.readline()은 개행문자의 삭제 여부, prompt argument(message)의 전달 여부에서 차이점을 갖는다.
  • 문자열 삭제와 stdout message 반환 자체는 그렇게 긴 시간과 비용을 요구하는 작업이 아니지만, 기본적인 I/O 함수를 비교하는 측면에서는 실행시간 측면에서 꽤나 큰 차이를 보인다.