# 문자열 입력 받기
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
이 저장돼요.
그럼, 이제 split
과 map
이라는 함수가 있어요.
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 comprehension
과 python for in one line
키워드를 치면 더 자세한 설명이 나올 거에요.
반복문을 한 줄로 처리하는 문법인데요. 위 코드를 아래처럼 바꿀 수 있어요!
n = int(input())
a = [int(input()) for i in range(n)]
일단 써보고 익숙해지면, 그 의미를 파악하는 방법도 좋아요!
사실 바로 위 코드도 더 줄일 수 있답니다. 익숙해지면, 사용해보세요!
a = [int(input()) for __ in range(int(input()))]