백준 문제를 풀 때 Input()을 사용하면 시간 초과가 발생하고, sys.stdin.readline()을 사용하면 시간 안에 채점이 완료되는 경우가 여러 번 있어서 이 둘의 차이를 명확하게 정리하고자 한다.
이 두 함수가 동작하는 모습을 보면 기능은 비슷하다고 생각할 수 있지만, 명확한 차이점이 존재한다.
1. input()
파이썬의 내장함수로써, 인수로 prompt message를 받을 수 있다.
2. sys.stdin.readline()
sys 모듈의 메소드로써, 인수로 prompt message를 받지 않는다.
3. 차이점
(1) 위에서 언급했듯이 input()은 인수로 prompt message를 받고, 이를 출력한다. 반면 sys.stdin.readline()은 아무런 인수를 받지 않기 때문에 어떤 값도 출력하지 않는다.
(2) input()은 입력의 종료를 나타내는 개행문자를 생략하는 과정을 거친다. 반면 sys.stdin.readline()은 개행문자를 포함한 한 줄 전체를 버퍼로 입력받는다.
위와 같은 차이 때문에 input()에 비해 sys.stdin.readline()이 빠르다. 특히 입력이 반복되는 경우에는 이 차이가 더 명확해지기 때문에 되도록 문제 풀이 시에는 sys.stdin.readline()을 사용하는 것이 좋겠다.
관련 문제 풀이
'알고리즘' 카테고리의 다른 글
(C++) 우선순위 큐(Priority Queue) (0) | 2023.03.27 |
---|---|
(Python) Deque (0) | 2023.01.04 |
계수 정렬 (0) | 2022.12.21 |