파이썬에서 데이터를 입력받는 방법

DinosaurDeveloper·2022년 12월 30일
0

파이썬

목록 보기
1/5

보통 코딩테스트 문제들을 풀다보면 문제들에서 입력값을 예시로 먼저 보여준다.
근데 파이썬 초보자들이 주로 사용하는 input() 만으로는 입력받기 곤란해 보이는 입력예제들이 보인다.
예를 들어보자.

"입력값 X,Y,Z 가 주어진다. 이 세값을 합한값을 출력해라."

INPUT : 10 20 30

OUTPUT : 60

이렇게 입력을 하는 문제도 있다.
나는 백준을 처음 풀어볼때 입력받는것 부터가 문제였다. 😂

이럴때는 파이썬의 split() , map() 함수를 이용해서 입력 받을 수 있다.


map()

map()함수는 파라미터로 두개의 인자를 받는다. 첫번째는 함수, 두번째는 리스트 이다. 입력받은 리스트 내부에 있는 모든 원소에 첫번째 파라미터에 들어간 함수를 모두 적용시켜 주는 것이다.

myli= ['1','2','3']
myli = list(map(int,myli))
print(myli)

--> [1,2,3]

split()

split()함수는 문자열 내의 요소들을 입력받은 파라미터의 단위로 쪼개어 나눈 다음 리스트에 저장해 반환한다. 그냥 split() 을 하면 공백을 기준으로 쪼개어 반환해준다.

mystr = "Hello!"
mystr.split()
print(mystr)

--> ['H','e','l','l','o','!']

이제 이 두가지 함수를 이용해서 다음과 같이 입력 받을 수 있다.

a, b, c = map(int,input().split())

input_list = list(map(int,input().split()))

위의 방법은 입력값이 그리 많지 않을때 받는 방법이다. 입력값이 차례대로 a,b,c 에 저장된다.

아래의 방법은 입력받은 값들이 리스트에 저장되어 반환된다. 입력받는 요소의 수가 꽤 많다면 리스트로 입력받은 후 인덱스로 접근해 사용하면 된다.


또한 간혹 단순히 input()함수를 사용하면 TimeOut이 발생할때도 있다. 이럴때는 input 대신에 sys.stdin.readline 을 이용해주면 문제가 해결 될 수도 있다.

import sys

data = sys.stdin.readline()
# 이걸 위의 예제에 그대로 응용해도 좋다.
data = list(map(int,sys.stdin.readline().split()))

# 또한 다음과같이 해주면 TimeComplexity는 유리하되, 코드는 기존과 같이 편리하게 작성할 수 있다.
import syt

input = sys.stdin.readline
data = list(map(int,input().split())) # 위의 코드와 같은 내용이다.

input 과 sys.stdin.readline 은 몇가지의 차이점때문에 실행시간에 차이점이 있다.
input의 내장함수를 뜯어보면 단순히 그냥 대화형 입력에 사용되는 stdin.readline과 달리 prompt인자를 파라미터로 받을수 있고, 개행문자를 삭제하는 기능이 포함되어 있다.
자세한건 Google님에게 더 물어보자...

profile
Developer who types like Tyrannosaurus

0개의 댓글