Python

[파이썬] 대량 입력 처리 방법

bornsoon 2024. 9. 17. 00:03

대량의 데이터 입력이 필요할 때, 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