코테 문제를 푸는데, 여러 상황에 대한 입력 정리가 헷갈려 정리하게 되었다.
N = int(input())
print(N)
print(input().split())
>>> a b c # 입력
>>> ['a', 'b', 'c']
N, M = map(int, input().split())
>>> 1 2 # 입력
print(N, M)
>> 1 2
❗ 입력할 데이터의 개수를 명확히 알 때 사용한다.
위와 같이 2개를 입력받는다고 구현했는데 3개를 입력하면 오류가 생긴다.
❗ 입력데이터가 여러개이거나 몇개인지 알 수 없을 때
arr = list(map(int, input().split()))
>>> 1 2 3 4 5 # 입력
print(arr)
>>> [1, 2, 3, 4, 5] # 숫자형 리스트로 입력받아 arr에 저장됨
map에 대한 이해를 위해 더 예시를 들면..
>>> a = [1.2, 2.5, 3.7, 4.6]
>>> a = list(map(int, a))
>>> a
[1, 2, 3, 4]
a리스트의 모든 요소를 int로 변환하고 list로 감싸 map의 결과를 리스트로 만든다.
print(input())
>>> 12345 # 입력
>>> 12345
arr = list(input()) # 한줄을 입력받아 리스트로 감싸는 경우
>>> 12345 # 입력
print(arr)
>>> ['1', '2', '3', '4', '5'] # 문자 하나씩을 리스트로 변환한다.
위으 경우에 map() 함수를 이용해 문자열을 숫자로 변환 후 list로 감싸 리스트로 변환한다.
arr = list(map(int, input())) # map을 이용해 문자열을 숫자로 변환
>>> 12345 # 입력
print(arr)
>>> [1, 2, 3, 4, 5] # 숫자형 리스트로 입력된다.
N = int(input()) # 행 입력
>>> 3 # 입력
# N번 반복하며 한줄을 읽고, 공백문자로 나누어 숫자형으로 변환 후 리스트(1차원배열)로 만듦.
# -> 최종적으로 2차원배열 생성
arr = [list(map(int, input().split())) for _ in range(N)]
>>> 1 2 3 # 공백으로 구분하여 총 3행 입력
>>> 4 5 6
>>> 7 8 9