728x90
sys.stdin.readline()
백준을 풀다 보면 이유 없이 시간초과를 당할 때가 있다. 그럴 때는 input()을 sys.stdin.readline()으로 바꾸면 시간 초과 없이 문제를 해결할 수 있다.
input()보다 sys.stdin.readline()이 빠른이유
- sys.stdin.readline()에는 input("프롬프트")와 같이 프롬프트를 출력하는 기능이 없다.
- 버퍼에 입력되는 방식에 차이가 있다.
- input()은 입력하는 값 하나하나마다 버퍼에 저장한다. \n과 같은 개행 문자를 입력이 종료되는 기준으로 삼으므로 개행 문자를 생략하여 입력받을 수 있다.
- sys.stdin.readline()은 readline이라는 이름과 같이 개행 문자를 포함한 하나의 줄을 버퍼로 입력받는다.
- input()은 내장함수로 취급되지만 sys에 속하는 메소드들은 file object로 취급된다. 즉, 그때그때 입력만을 받는 buffer를 만들고 읽어 들인다.
sys.stdin.readline()의 특징
- 입력 크기에 제한을 줘 한번에 읽어 들일 문자의 수를 정할 수 있다.
import sys
str = sys.stdin.readline(3)
print(str)
----------------------------
입력 : hello world, 출력 : hel
- import sys를 해야 한다.
- input()은 입력이 없는데도 실행할 경우 EOFerror를 일으키는 반면, sys.stdin.readline()은 빈 문자열을 반환한다.
- EOFerror(End Of File error) : 입력이 없을 때도 실행될 경우 발생하는 에러
참고자료 : quora.com
반응형
'언어 > Python' 카테고리의 다른 글
[Flask] if __name__ == '__main__': 이 필요한 이유 (1) | 2024.01.28 |
---|---|
[Python] pyenv로 파이썬 버전 관리 (0) | 2024.01.22 |
Pandas.2 (0) | 2023.01.18 |
Pandas.1 (0) | 2023.01.15 |