Python으로 다양한 입력 받는 방법

3Juhwan·2022년 7월 8일
2

요약


# 문자열 입력 받기
s = input()


# 1개의 숫자 입력 받기
n = int(input())


# 2개의 숫자 한 줄에서 입력 받기
a, b = map(int, input().split())


# 3개의 숫자 한 줄에서 입력 받기
a, b, c = map(int, input().split())


# 여러 개의 숫자 여러 줄에서 입력 받기
a = int(input())
b = int(input())


# 한 줄로 리스트 입력 받기
a = list(map(int, input().split()))


# 여러 줄에 걸쳐 들어오는 숫자 리스트로 받기
a = [int(input()) for __ in range(n)]

설명

s = input()

위 코드에서 input()은 입력되는 모든 걸 문자열로 취급해요.

만약에 1을 입력하면, s="1"이 저장되는 거에요.

숫자를 입력 받으려면 input()int()를 씌운 형태로 작성해야 해요.

n = int(input())

위 코드에서 1을 입력하면, n=1이 저장돼요.

그럼, 이제 splitmap이라는 함수가 있어요.

split 은 말 그대로 쪼개는 거에요.

split 함수는 안에 주어진 인자를 기준으로 문자열을 쪼개서 리스트로 변환해줘요.

a = input().split()
print(a)

# input >> 1 2 3 4 5
# output >> ["1", "2", "3", "4", "5"]

보이나요? input으로 문자열 "1 2 3 4 5"을 입력 받았어요. split"1 2 3 4 5"를 띄어쓰기 단위로 쪼개서 리스트로 변환해줘요.

이제, map을 볼게요. map 함수는 map(자료에 적용할 함수, 변환할 자료) 형태로 이뤄져있어요.

예시 코드를 보고 이해해볼게요.

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

# input >> 1 2 3 4 5
# output >> [1, 2, 3, 4, 5]

위에서 input().split()["1", "2", "3", "4", "5"] 까지 만들어준다고 했어요.

우리가 원하는 건 문자로 구성된 리스트가 아니라, 숫자로 구성된 리스트에요.

위 리스트의 각각 원소를 숫자로 바꿔줘야 해요. 가장 간단한 방법은 다음과 같을 거에요.

a = input().split()
b = []
for i in range(len(a)):
	b.append(int(a[i]))
print(b)

# input >> 1 2 3 4 5
# output >> [1, 2, 3, 4, 5]

그런데, 파이썬에선 이런 방법이 권장되지 않아요. 파이썬엔 map이라는 편한 함수가 있거든요.

위에서 map 함수 구조를 보면 map(자료에 적용할 함수, 변환할 자료) 이런 형태라고 했어요.

map 함수는 두번째 인자인 변환할 자료에 첫번째 인자인 자료에 적용할 함수를 각각 적용해서 돌려줘요.

map 함수에 int 함수와 ["1", "2", "3", "4", "5"]를 인자로 주면 다음과 같은 형태일거에요.

map(int, ["1", "2", "3", "4", "5"])

두번째 인자인 ["1", "2", "3", "4", "5"]에 각각 int 함수를 적용한 결과를 우리에게 돌려줘요.

여기서 한 가지 중요한 점. map 함수는 map 객체라는 걸 반환하기 때문에, 우리는 map 객체를 list로 변환 시켜줘야 해요.

따라서 아래와 같은 결과가 나오게 돼요.

a = list(map(int, input().split()))
print(a)

# input >> 1 2 3 4 5 
# output >> [1, 2, 3, 4, 5]

마지막으로, 여러 줄에 걸쳐서 입력되는 숫자를 하나의 리스트에 저장하는 방법이에요. 아래처럼 N개의 입력되는 숫자들을 하나의 리스트에 넣고 싶어요.

5 <- N
1
2
3
4
5

간단한 방법인 다음과 같을 거에요.

a = []
n = int(input())
for i in range(n):
	a.append(int(input()))

위처럼 해도 좋아요! 그런데, 파이썬엔 더 짧고 간결한 코드가 있어요.

구글에 python list comprehensionpython for in one line 키워드를 치면 더 자세한 설명이 나올 거에요.

반복문을 한 줄로 처리하는 문법인데요. 위 코드를 아래처럼 바꿀 수 있어요!

n = int(input())
a = [int(input()) for i in range(n)]

일단 써보고 익숙해지면, 그 의미를 파악하는 방법도 좋아요!

사실 바로 위 코드도 더 줄일 수 있답니다. 익숙해지면, 사용해보세요!

a = [int(input()) for __ in range(int(input()))]
profile
Codeforces와 USACO 풀이를 기록합니다. 이전 글도 계속 업데이트 됩니다.

0개의 댓글