본문 바로가기

알고리즘

[Python] 다양한 문자열 입력 방법

저는 코딩테스트를 주로 파이썬으로 진행합니다.

예전에 고등학생 때는.. C언어를 사용하였지만 이제는 파이썬이 손에 익어버렸습니다.

그만큼 문법도 쉽고 구현도 쉬운 파이썬의 다양한 문자열 입력 방법과 변수, 배열에 저장하는 방법을 알려드리겠습니다.

 

* map (자료형, 매핑할 값)

* split()   : 괄호 안의 값을 기준으로 값을 나눠줌, 빈칸은 한칸 띄어쓰기(' ')와 동일

 

- 변수 여러개 한줄에 입력 받기

map함수를 사용하면 for문을 쓰지 않고 한줄에 여러 개의 정수를 입력받을 수 있습니다.

line단위로 입력이 나뉘기 때문에 엔터에 주의해야합니다.

split()을 사용하여 띄어쓰기를 기준으로 변수를 나눕니다.

 

* 참고 : int로 자료형을 바꿔주지 않으면 문자로 취급됩니다.

x, y, k, t = map(int,input().split())

print(x,y,k,t)

"""
입력 
1 2 3 4

출력 
1 2 3 4
"""

strA, strB = input.split() # 문자 취급

print(strA, strB)

"""
입력 
str1 str2

출력 
str1 str2

"""

 

- 1차원 배열 입력 받기

마찬가지로 map함수를 사용하면 코드를 간결하게 할 수 있습니다.

 

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

print (arr)

"""
입력
1 2 3 4 5

출력
[1, 2, 3, 4, 5]

"""

 

- 2차원 배열 입력 받기

n은 보통 입력을 받거나 len() 함수를 사용해서 입력의 line의 수만큼 반복하면 됩니다.

2차원 배열은 1차원 배열 입력 받기에서 for 문을 추가해주면 됩니다.

[] 괄호 안에 넣어주어야지 n번 만큼 반복을 하면서 한 줄씩 입력을 받게 됩니다.

n = int(input())
arr = [list(map(int,input().split())) for _ in range(n)]

print(arr)

"""
입력
5
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25

출력
[[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15], [16, 17, 18, 19, 20], [21, 22, 23, 24, 25]]
"""

 

 - 띄어쓰기 없는 1차원 배열 입력 받기

띄어쓰기가 없이 들어오는 경우 input을 list로 변환을 시켜주면 됩니다.

정수형으로 넣어주고 싶다면 map을 활용하여 아래 코드와 같이 변경해주면 됩니다.

arr = list(input())

print(arr)

"""
입력
12345

출력
['1', '2', '3', '4', '5']

---------------------------
"""

arr = list(map(int,input()))

print(arr)

"""
입력
12345

출력
[1, 2, 3, 4, 5]

"""

 

-  띄어쓰기 없는 2차원 배열 입력 받기

위의 띄어쓰기 없는 1차원 배열 받기에서 for문을 추가해주어 여러 줄의 문자열을 배열로 만들 수 있습니다.

n = int(input())
arr = [input() for _ in range(n)]

print(arr)

"""
입력
5
UDLRU
DUDDL
LRUDD
URLUU
DDUDU

출력
['UDLRU', 'DUDDL', 'LRUDD', 'URLUU', 'DDUDU']
"""

 

2차원 형태로 부름이 가능하지만 정수형으로 받는 경우나 완전한 칸칸이 분리가 필요하다면

 

n = int(input())
arr = [list(map(int,input())) for _ in range(n)]

print(arr)

"""
입력
5
12345
54321
32145
51315
52142

출력
[[1, 2, 3, 4, 5], [5, 4, 3, 2, 1], [3, 2, 1, 4, 5], [5, 1, 3, 1, 5], [5, 2, 1, 4, 2]]
"""

이렇게 분리도 가능합니다.

(정수가 아닌 문자로 쓰고 싶다면 map()을 제거하면 됩니다.)

 

 

코딩테스트를 하다 보면 다양한 입력방식이 주어지게 되는데 위의 나오는 list,map,split의 활용을 익혀 두면 간결하게 입력을 받을 수 있습니다.

혹시 위의 내용말고 또 다른 입력 유형이 있다면 댓글로 남겨주시면 추가하도록 하겠습니다!

 

'알고리즘' 카테고리의 다른 글

[백준] 1927번: 최소 힙  (0) 2022.10.18
[백준] 11399번: ATM  (0) 2022.10.18
[백준] 14499번: 주사위 굴리기  (0) 2022.04.30
[백준] 3190번: 뱀  (0) 2022.04.30
[백준] 13460: 구슬 탈출 2  (0) 2022.04.29