대량의 데이터 입력이 필요할 때, input()으로 여러 번 받으면 시간이 오래걸리게 된다.
그래서 입력 데이터가 매우 많은 경우, input() 대신 sys.stdin을 사용하여 입력을 더 빠르게 읽을 수 있다.
이 방법을 사용하면 input()을 여러 번 호출하는 대신
한 번의 입력으로 데이터를 처리하는 것이 더 효율적일 수 있다.
import sys
input = sys.stdin.read
data = input().split()
N = int(data[0])
n = list(map(int, data[1:]))
sys.stdin.read().split()
- sys.stdin.read().split(): 입력 전체를 하나의 문자열로 읽은 후, 공백 문자를 기준으로 문자열을 나누어 리스트를 생성한다. 결과는 공백으로 구분된 토큰들의 리스트이다.
sys.stdin.read().splitlines()
- sys.stdin.read().splitlines(): 입력 전체를 하나의 문자열로 읽은 후, 줄 바꿈 문자를 기준으로 문자열을 나누어 리스트를 생성한다. 결과는 각 줄이 하나의 요소로 포함된 리스트이다.
sys.stdin.readline()
- sys.stdin.readline(): 표준 입력에서 한 줄을 읽어 문자열로 반환한다. 반환된 문자열에는 줄 바꿈 문자(\n)가 포함되어 있다.
- 작동 방식: 이 함수는 한 줄씩 입력을 읽어온다. 호출할 때마다 새로운 한 줄의 입력을 가져온다.
- 메모리 사용: 한 번에 한 줄만 읽기 때문에 메모리 사용량이 상대적으로 적다. 입력을 읽을 때마다 필요한 만큼만 메모리를 할당한다.
sys.stdin.readlines()
- sys.stdin.readlines(): 입력 전체를 줄 단위로 읽어들여 각 줄을 리스트의 요소로 갖는 리스트를 생성한다. 각 요소는 줄 바꿈 문자를 포함할 수 있다.
- 작동 방식: 이 함수는 전체 입력을 한 번에 읽어와서 각 줄을 리스트의 요소로 반환한다.
- 메모리 사용: 모든 입력을 한 번에 메모리에 로드하므로, 입력 데이터가 크면 상당한 양의 메모리를 사용할 수 있다. 즉, 모든 데이터를 한 번에 저장하기 때문에 메모리 사용량이 높아질 수 있다.
** 줄 바꿈 문자(개행문자 '/n')을 제거하려면 strip()을 사용하면 된다.
728x90
'Python' 카테고리의 다른 글
[파이썬] 리스트 비교 (대소관계 비교) (0) | 2024.10.17 |
---|---|
[파이썬] 시간 측정하기 (0) | 2024.09.21 |
[파이썬] 딕셔너리(dictionary) key(키) 또는 value(값) 순으로 정렬하기 (1) | 2024.09.16 |
[파이썬] count 함수 (1) | 2024.09.13 |
[파이썬] sort, sorted 함수 + 리스트 길이 옵션 (0) | 2024.09.12 |