호기심 많은 분석가

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

Coding/Coding Test & Algorithm

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

DA Hun 2021. 5. 27. 15:43

 코딩 테스트를 준비하다 보면 input의 경우 런타임 에러가 뜰 때가 있다. 실제로도 이것 때문에 애를 먹었는데, 이 것을 방지해줄 sys 라이브러리의 readline() 문법을 알아보자.


1. 한 개의 정수 입력받기

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

 sys.stdin.readline()의 경우 한 줄 단위로 입력받기 때문에, 개행 문자가 같이 입력된다. 1을 입력한다면 '1\n'의 형태로 입력되기 때문에, int형으로 변환시켜줘야 함.


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

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

 input과 사용법이 크게 다르지 않다. split()을 통하여 띄어쓰기로 입력된 정수를 나눠 리스트에 넣어준다.


3. 여러 줄을 입력받아 리스트에 저장할 때

import sys
arr = []
n = int(sys.stdin.readline())
for i in range(n):
	arr.append(list(map(int, sys.stdin.readline().split()))
import sys
n = int(sys.stdin.readline())
arr = [sys.stdin.readline().strip() for i in range(n)]

 위와 같이 2가지의 방법으로 저장할 수 있다. strip()은 문자열 맨 앞, 뒤 공백을 제거해주는 메서드다.


 같은 방식의 코드면서도 시간이 훨씬 빠르므로 input보다는 readline을 생활화하야겠다.