-
python 입력 방법: input(), sys.stdin.readline()의 차이점STUDY/CS 2024. 4. 30. 22:44반응형
요즘 계속해서 백준 문제를 풀고 있다.
파이썬으로 문제를 풀고 있는데 생각보다 '시간 초과'로 실패 처리가 되는 경우가 생각보다 많다.
=반복문이 이유라고 지레짐작하고 있었는데 문제 Q&A 탭에서 의외로 input()이 문제라는 답변을 읽게 되었다. 그리고 input()보다는 sys.stdin.readline()을 쓰는 것이 좋다는 팁도 얻었다.
sys.stdin.readline()를 사용해 문제는 맞았지만, 이게 정확히 input()과 어떻게 다른지 정리해 보려고 한다.
input()에 대한 설명
input()에 대한 공식 파이썬 문서의 설명은 다음과 같다.
한국어로 번역하면 다음과 같다. (deepl 번역기에게 감사를)
프롬프트 인수가 있으면 후행 줄 바꿈 없이 표준 출력에 기록됩니다. 그런 다음 함수는 입력에서 한 줄을 읽고 문자열로 변환한 다음(후행 줄 바꿈 제거) 반환합니다. EOF를 읽으면 EOFError가 발생합니다.
input()은 입력한 줄을 일단 문자열로 반환하고, 후행 줄바꿈까지 제거해 준다.
sys.stdin.readline()에 대한 설명
sys 모듈
System-specific parameters and functions의 앞글자를 딴 이름으로 역할은 다음과 같다.
이 모듈은 인터프리터가 사용하거나 유지 관리하는 일부 변수와 인터프리터와 강력하게 상호 작용하는 함수에 대한 액세스를 제공합니다. 항상 사용할 수 있습니다.
stdin
인터프리터가 표준 입력, 출력 및 오류에 사용하는 파일 객체:
input() 호출을 포함한 모든 대화형 입력에는 stdin이 사용됩니다;그러니까 입력하는데 사용되는 파일 객체를 뜻하는 말이다.
readline
쉽게 읽고 쓸 수 있게 해주는 함수를 정의하는 모듈
따라서 sys.stdin.readline()은 겉보기로는 input()과 동일하지만 문자를 읽어 들이는 과정에서 차이가 생긴다.
input()과 sys.stdin.readline()의 차이점
1. 한번에 읽어서 버퍼에 저장하는 sys.stdin.readline()과 달리 input()은 값을 입력할 때마다 버퍼에 저장
> 그렇기 때문에 input()을 여러 번 반복할 경우 sys.stdin.readline() 보다 느려진다
2. sys.stdin.readline()은 개행문자까지 포함해서 저장
> 따라서 strip()이나 rstrip()으로 제거해 주어야 한다.
3. input()은 프롬프트 메세지를 받아 출력할 수 있지만 sys.stdin.readline()는 그럴 수 없다
참고 자료:
https://docs.python.org/3/library/
반응형'STUDY > CS' 카테고리의 다른 글
vscode에서 cmd+s 저장 단축키가 사용 불가능한 오류 | chat gpt macos 앱 (0) 2024.05.26 웹 백엔드 프로젝트 회고 kpt | python, django 사용 (0) 2024.02.12 [백준] 24416. 알고리즘 수업 - 피보나치 수 1 (파이썬 python, pypy3) (1) 2024.01.07 [백준] 17202. 핸드폰 번호 궁합 (파이썬 python) (2) 2023.12.30 [LeetCode] 412. Fizz Buzz 풀이 (python) (1) 2023.12.27