[Python] 입력받기 (sys.stdin.readline)

썬구리·2022년 9월 1일
0
post-thumbnail

Why ?

정렬, 이진탐색, 최단경로 문제에서
반복문으로 여러 줄을 연속적으로 입력받아야 할 경우,
input()으로 입력받으면 시간초과가 발생할 수 있습니다.

How ?

입출력 방법을 바꿔줌으로써 최대한 빠르게 받아 해결할 수 있는 방법이 있습니다.

sys
: 파이썬 인터프리터가 사용하는 변수와 함수를 직접 제어할 수 있게 해주는 모듈

한 개의 정수를 입력받을 때

import sys
n = int(sys.stdin.readline()) 

정해진 개수의 정수를 한 줄에 입력받을 때

import sys
a,b,c = map(int, sys.stdin.readline().split())

임의의 개수의 정수를 한줄에 입력받아 리스트에 저장할 때

import sys
data = list(map(int, sys.stdin.readline().split())

임의의 개수의 정수를 n줄 입력받아 2차원 리스트에 저장할 때

import sys
data = []
n = int(sys.stdin.readline()) 

for i in range(n)
	data.append(list(map(int, sys.stdin.readline().split())))

문자열 n줄을 입력받아 리스트에 저장할 때

import sys
n = int(sys.stdin.readline())
data = [sys.stdin.readline().strip() for i in range(n))
# strip() : 개행문자 \n 제거  

What ?

입출력(I/O) 속도 개선, 시간초과 해결

  • 백준 알고리즘 10773번
    input() : 3924ms
    sys.stdin.readline() : 120ms
profile
맛있는 개발파이

0개의 댓글