Languages/Python

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

효딩 2024. 4. 2. 13:44

반복문으로 여러 줄을 입력받는 경우 input()을 사용하면 시간초과가 발생할 수 있다.

따라서 시간 초과가 나지 않기 위해서는

sys.stdin.readline()을 사용해야 한다.

더보기

📌input()이 sys.stdin.readline()보다 느린 이유

1. input()은 매개변수로 prompt message를 받는다. (따라서 입력 받기 전에 prompt message를 출력해야 한다)

2. 입력받은 값의 개행 문자를 삭제시키고 반환한다.

예시)

import sys

T = int(input())
for i in range(T):
	a, b = map(int, sys.stdin.readline().split())
    print(a+b)

 

사용 전 import sys를 잊지 말자

 

 

💖 sys.stdin.readline() 사용법

 

- 한 개의 정수 입력 받을 때

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

sys.stdin.readline()은 한 줄 단위로 입력받기 때문에 개행문자 "\n"을 같이 입력받는다.

만약 "Hello World!"를 입력했다면, "Hello World!\n"이 들어오기 때문에 개행문자를 제거해야 한다.

또한 변수 타입이 문자열 형태(str)로 저장되기 때문에, 정수로 사용하기 위해서 형변환을 거쳐야 한다.

 

import sys

input = sys.stdin.readline
x = int(input()) #sys.stdin.readline()과 같은 역할을 함. 시간 단축 가능

맨 앞에 이렇게 정의해두면

계속 sys.stdin.readline을 부르지 않고 평소 쓰던대로 input()을 사용해도 된다.

 

 

- 2개 이상의 정수를 한 줄에 입력받을 때

import sys

N, M = map(int, sys.stdin.readline().split())

map()을 이용하여 두 개 이상의 정수를 입력받을 수 있다.

또한 split()은 문자열을 나눠주는 함수이다. 괄호 안에 특정 값을 넣어주면 그 값을 기준으로 문자열을 나누고, 아무 값도 없다면 공백(스페이스, 탭, 엔터 등)을 기준으로 나눈다.

 

리스트로 반환하고 싶다면 map()을 list()로 감싸줘야 한다.

list()는 자료형을 리스트형으로 변환해준다.

 

 

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

import sys
data = []
n = int(sys.stdin.readline()) #2
for i in range(n):
	data.append(list(map(int, sys.stdin.readline().split()))) #3, 5

print(data) #[[3], [5]]

 

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

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

이 때 strip()은 문자열 맨 앞과 맨 끝의 공백문자를 제거한다.

 

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

https://yeomss.tistory.com/120

 

Python sys.stdin.readline() 사용 / 알고리즘 입력 받기

주로 파이썬에선 알고리즘을 입력받을 때 input() 을 많이 씁니다. 하지만 input() 을 사용하면 종종 시간 초과 에러가 뜰 때가 있습니다. 이를 방지하기 위해서 사용하는 sys.stdin.input() 을 소개하고

yeomss.tistory.com