[파이썬] 코딩테스트 입력처리

Bini by Bini·2023년 2월 6일
0

파이썬

목록 보기
2/4

코테 문제를 푸는데, 여러 상황에 대한 입력 정리가 헷갈려 정리하게 되었다.

한줄을 읽어서 정수로 변환하기

  • input() : 한줄을 읽어온다.
  • int() : 정수로 변환한다.
N = int(input())
print(N)

한줄을 읽고 공백으로 구분된 문자를 입력받기

  • input().split(구분문자) : 한 줄을 읽고, 구분문자로 나누어 문자로 이루어진 리스트 생성
print(input().split())
>>> a b c # 입력
>>> ['a', 'b', 'c']

split() vs split("")

  • split() : 공백이 1개이건 2개이건 n개이건 무조건 1개로 처리하여 분리
  • split("") : 공백 1개, 1개를 각각의 공백으로 따로따로 처리

한줄을 읽고 공백으로 구분된 문자를 정수로 변환하기

  • map(형식, 리스트) : 리스트에 있는 데이터를 형식에 맞게 변환한다.
N, M = map(int, input().split())
>>> 1 2 # 입력
print(N, M)
>> 1 2

입력할 데이터의 개수를 명확히 알 때 사용한다.
위와 같이 2개를 입력받는다고 구현했는데 3개를 입력하면 오류가 생긴다.


입력데이터가 여러개이거나 몇개인지 알 수 없을 때

1차원 배열(리스트) 입력받기

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의 결과를 리스트로 만든다.


이어진 숫자를 한자리씩 나누어 리스트에 저장 : 문자열 리스트로 저장

  • input() : 한줄을 읽어온다. (구분문자가 없고 문자열로 읽어온다.)
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행으로 이루어진 2차원 배열 입력받기

  • arr = [반복내용 for in range(반복횟수_)]
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
profile
My Precious Records

0개의 댓글