[Python] sys.stdin.readline() - 빠른 입력 받기
sys.stdin.readline() 입력받기
나는 대부분의 코딩테스트 입력을 input()
으로 받았다.
그런데, input()
으로 입력 받아 문제를 풀면 시간 초과 에러가 떠 해결책을 찾으니 sys.stdin.input()
을 사용해야 한다고 했다.
👉 왜 input()은 느린가?
1
a = input("출력할 문장")
- input() 함수는 출력할 문장을 출력한다.
- 입력 받은 값의 개행문자
(\n)
를 삭제하고 반환한다.
👉 sys.stdin.readline()
1
2
3
import sys
a = sys.stdin.readline()
- 문자열로 입력 받는다.
- 개행 문자를 같이 입력 받는다. -> 출력하면 개행 문자도 같이 출력
👉 한 줄로 입력받기
예시코드
1
2
3
4
5
6
import sys
arr = []
a = int(sys.stdin.readline())
a.append(arr)
print(arr)
출력결과
1
>>> ['hello World\n']
- input() 함수와 같이 int(), float() 등 원하는 데이터형 변환 함수 안에 readline() 를 넣어준다.
👉 여러줄 입력받기
예시코드
1
2
3
4
5
import sys
a = sys.stdin.readline().strip()
b = sys.stdin.readline().strip('\n')
c = sys.stdin.readline().rstrip('\n')
strip()
은 해당 문자열의 양쪽끝에 개행문자(\n) 공백(\t)을 삭제해준다.rstrip()
은 문자열의 오른쪽에 모든 조합을 제거한다. 따라서 마지막 줄에서는 rstrip()을 써주었다.
👉 한 줄에 여러 개 입력받기
예시코드
1
2
3
import sys
N, M = map(int, sys.stdin.readline.split())
input()
과 같이split()
함수를 사용해서 나눠준다.- 만약, 정수형으로 입력받고 싶다면
map()
함수를 사용한다.
👉 마무리
사용법을 알아보면서 input()
함수와 전체적으로 받는 틀은 같다고 생각했다.
지금은 input()
이 익숙하지만, 코드의 런타임을 생각한다면 앞으로 이 방법으로 입력 받아야겠다.
This post is licensed under CC BY 4.0 by the author.