본문 바로가기
코딩테스트/스터디

[코테 스터디] sys.stdin.readline()으로 입력 받기

by 왕자두 2024. 3. 23.

매번 습관적으로 input() 대신 sys.stdin.readline()으로 입력을 받아왔는데 스터디를 하면서 input() 대신 sys.stdin.readline()을 사용하는 이유에 대한 질문이 들어와 정확히 내 머리에도 넣기 위해서 찾아보고 기록해두도록 하겠다.

 

하나의 입력을 받는 상황에서는 input()으로 입력을 받아도 괜찮지만 반복문으로 여러 줄을 입력 받아야 하는 상황이라면 sys.stdin.readline()으로 입력 받아야 시간 초과가 발생하지 않는다고 한다.

 

사용 방법은 아래와 같다.

import sys

n = sys.stdin.readline()

 

정수로 입력을 받아 사용하기 위해서는 위의 입력 받는 식에 int()함수를 사용한다.

import sys

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

 

여러 변수에 정수를 한 번에 입력 받으려고 할 때에는 아래와 같이 map() 함수를 함께 사용한다.

import sys

n, m = map(int, sys.stdin.readline().split())

 

정수를 한 줄에 입력 받고 이를 리스트에 저장하려고 할 때에는 아래와 같이 list() 함수와 map() 함수를 함께 사용한다.

import sys

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

 

정수를 입력 받아 2차원 리스트에 저장할 때에는 for문을 통해 한 행에 들어가는 열의 개수만큼 정수를 입력한다. 배열 안에 배열이 들어갈 수 있으므로 2차원 리스트가 되고, 이렇게 입력을 받게 되면 길이가 같거나 다른 리스트를 모두 저장할 수 있게 된다.

import sys

n = int(sys.stdin.readline())
array = list()

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

 

문자열 n줄을 입력 받아 리스트에 저장할 때에는 아래의 코드와 같이 작성한다.

import sys
n = int(sys.stdin.readline())
array = [sys.stdin.readline().strip() for i in range(n)]

# 입력
# 3
# abcd
# efgh
# ijkl

# 출력
# ['abcd', 'efgh', 'ijkl']

 

참고

https://velog.io/@yeseolee/Python-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%9E%85%EB%A0%A5-%EC%A0%95%EB%A6%ACsys.stdin.readline

 

[Python 문법] 파이썬 입력 받기(sys.stdin.readline)

파이썬으로 코딩 테스트를 준비한다면, 반드시 알아야 할 입력방식인 sys.stdin.readline()에 대한 정리 입니다.

velog.io