Home 코딩테스트에서 sys.stdin.readline()을 사용해야 하는 이유
Post
Cancel

코딩테스트에서 sys.stdin.readline()을 사용해야 하는 이유

코딩테스트에서 sys.stdin.readline()을 사용해야 하는 이유에 대하여 알아보자.

먼저 Python 문자열을 입력받는 가장 쉬운 방법은 input() 함수를 사용하는 것이다.

# input()을 사용하여 정수 입력 받기

num = int(input())
a, b = map(int, input().split())

하지만 코딩테스트 문제를 풀다보면 sys.stdin.readline()을 사용한다.

# sys.stdin.readline()을 사용하여 정수 입력 받기

import sys
num = int(sys.stdin.readline().rstrip())


결론적으로 말하자면 sys.stdin.readline()을 사용하는 이유는 입력을 위해 input()을 사용하였을 때 기능적으로는 작동하지만 효율성을 통과하지 못하고 시간초과가 발생하는 경우가 많기 때문이다.


readline
input() 과 readline()을 사용했을 때 실행 시간의 차이


input()과 readline()의 차이를 알고, 어떠한 경우 readline()을 사용해야 하는지 알아보자.


1. input() vs sys.stdin.readline()

input() 함수는 입력받은 값의 개행문자를 삭제한 결과, 즉 rstrip()한 결과를 리턴한다. 또한 input()은 사용자의 입력에 대한 prompt를 띄우며, parameter가 있을 경우 prompt message도 출력해준다.

반면 sys.stdin.readline() 은 개행문자를 포함한 모든 값을 한 번에 리턴하여 빠르다. 개행문자를 포함하기 때문에 rstrip()을 해주어야 한다.


2. 언제 sys.stdin.readline()을 사용해야 할까?

input()으로 한두번의 입력을 받는다면 실행 시간에 큰 차이가 없을 지 모르나, input()을 여러 줄에 반복해서 입력받는 작업이라면 prompt를 띄우고, 닫고, 개행문자를 삭제하는 등의 동작이 누적되어 결과적으로 실행 시간 측면에서 sys.stdin.readline()과 큰 차이가 생길 것이다.

반복문 등에서, 반복된 입력이 있는 경우에는 반드시 readline()을 사용하도록 하자.

This post is licensed under CC BY 4.0 by the author.

-

백준 10951번, 입력 케이스 개수가 정해지지 않은 경우