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

🚀 input()

기본적인 입력 방법으로 input() 자체는 문자열을 입력받는 것으로 처리됩니다.
따라서 숫자로 처리해야 하는 경우 형변환이 필요합니다.

str = input()
num = int(input())

💡 input().split()

split() 함수는 특정 구분자로 문자열을 나눌 때 사용합니다.
괄호 안에 특정 구분자를 입력하지 않는 경우, 공백(스페이스, 탭, 엔터 등)에 의한 띄어쓰기 구분으로 적용됩니다.

str = input().split()
>>> ['Nice', 'to', 'meet', 'you']

💡 map()

input().split()을 통해 입력된 값들을 여러 변수를 생성하여 각각의 값으로 할당하고 싶을 때 사용합니다.
단, 할당되는 변수와 값의 개수가 동일해야 합니다.

a, b, c = map(int, input().split())    # 입력 : '1 3 5'
print(a, b, c)
>>> 1, 3, 5

🚀 input() 대신 readline()을 사용하는 경우

한두줄을 입력받는 경우와 달리 여러줄을 입력받아야 하는 경우 input()사용시 시간초과 문제가 발생할 수 있습니다.
첫 줄에서 test case(size)를 입력받는 경우에는 input()을, 다음 줄부터는(여러줄 입력) sys.stdin.readline()을 사용해야 합니다.

import sys

T = int(input())  # test case(size)
for i in range(T) :
    A, B = map(int, sys.stdin.readline().split())
    print(A, B)

🚀 sys.stdin.readline() 사용법 정리

💡 한 개의 정수 입력

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

sys.stdin.readline()의 경우, 한줄 단위로 입력받기 때문에 개행문자(\n)가 같이 입력받아 집니다.
따라서, 1) 개행문자 제거, 2) 형변환(str→int)을 위해 위와 같이 사용합니다.

💡 둘 이상의 정수 입력

import sys
a, b, c = map(int, sys.stdin.readline().split())     # 각각의 변수(a,b,c)에 할당
lst = list(map(int, sys.stdin.readline().split()))   # 리스트에 저장

💡 임의의 개수의 정수를 n줄 입력받아 2차원의 array에 저장하는 경우

import sys
lst = []
T   = int(sys.stdin.readline())   # test case(size)
for i in range(T):
    lst.append(list(map(int, sys.stdin.readline().split())))

💡 n줄의 문자열을 입력받아 리스트에 저장하는 경우

import sys
T = int(sys.stdin.readline())    # test case(size)
lst = [sys.stdin.readline().strip() for i in range(T)]

strip() 함수 사용하여 맨 앞, 맨 끝의 공백문자를 제거합니다.

🚀 참조링크

https://velog.io/@yeseolee/Python-파이썬-입력-정리sys.stdin.readline
https://velog.io/@tbnsok40/파이썬-다양한-입력방법-input-read-readline

Categories:

Updated:

Leave a comment