[Python] input()과 sys.stdin.readline()의 차이점

# input()을 사용한 사용자 입력받기
A,B = map(int,input().split(' '))

# sys.stdin.readline()을 사용한 사용자 입력받기
str = sys.stdin.readline().strip()
A,B = map(int,str.split(' '))

 

input()

문자 한 개를 입력받을 때마다 버퍼에 저장하므로 문자열이 길어지거나 처리 횟수가 증가할 수록 속도가 크게 처진다.

또한 개행 문자를 받을 때 입력을 종료하는 기능, 개행 문자를 제거하는 기능, 문자열을 함께 출력하는 기능 등이 포함되어 있다.

 

sys.stdin.readline()

파이썬의 인터프리터의 함수와 변수를 직접 제어할 수 있는 sys 모듈을 통해 문자열을 받으며, 문자 단위가 아닌 문자열 단위로 입력을 받는다.

문자열 단위로 버퍼에 저장하고 개행 문자 제거, 문자열 함께 출력 기능 등이 없어 대량의 명령을 처리할 때 속도가 input()에 비해 빠르다.

개행 문자까지 전부 버퍼에 저장되므로 개행 문자를 제거하러면 .strip()을 함께 사용해야 한다.

 


참고문헌

 

[Python] input보다 sys.stdin.readline의 처리 속도가 빠른 이유는?

백준의 문제를 Python으로 풀다보면 input() 함수를 사용하는 것보다 sys.stdin.readline()으로 입력을 받으면 처리 시간이 짧아지는 것을 경험하는데요. 그 이유에 대해 생각해보고자 합니다. 먼저 sys 모

green-leaves-tree.tistory.com

 

백준 15552번: 빠른 A+B