알고리즘을 풀다보면 자연수 integer를 각 자리 수로 나누어 사용해야하는 경우가 있다
이 경우 보통 array형식으로 만들어 활용하는데,
자연수를 list로 만드는 3가지 방법이 있다.
아래 글에서 number = 123 으로 전제한다
1. 문자열로 바꾸어 append
a = []
for i in str(number):
a.append(i) # a = ['1', '2', '3'] 문자열
number를 문자열로 만들어 for문으로 각 자리수를 분리한 다음
list에 append하는 형식을 취한다.
이때 결과는 가장 큰 수가 앞, 1의 자리수가 뒤에 들어간 문자열 배열을 출력한다
2. while과 % // 연산자
a = []
while(number!=0): # 123 12 1
a.append(number%10)
number = number//10
# a = [3, 2, 1] 자연수
while문은 해당 조건이 만족될때까지 반복해서 계산하므로, 조건을 0이 아닐때로 준다
그리고 10으로 나눈 나머지(=1의 자리수)를 list에 append
계산 후에는 number를 10으로 나누어 몫만 취하여 반복한다
결과물은 1의 자리부터 정수로 들어간 배열을 출력한다
3. map() 활용
a = list(map(int, str(number))
# a = [1, 2, 3] 자연수
map에 문자열로 만든 number를 넣어 자리수마다를 쪼개고, 바로 int로 만들어 list에 담는다
결과물은 자리 순서대로의 자연수를 담은 배열을 출력한다
map() 함수 https://docs.python.org/3/library/functions.html#map
'알고리즘 풀이' 카테고리의 다른 글
[알고리즘] 프로그래머스 | 콜라츠 추측, 부족한 금액 계산하기, 최대공약수와 최소공배수 (0) | 2023.08.08 |
---|---|
[알고리즘] 프로그래머스 | K번째 수, 숫자 문자열과 영단어 (0) | 2023.08.07 |
[알고리즘] 프로그래머스 | 하샤드 수, 나누어 떨어지는 숫자 배열, 행렬의 덧셈 (0) | 2023.08.05 |
[알고리즘] 프로그래머스 | 문자열 다루기, 없는 숫자 더하기, x만큼 간격이 있는 n개의 숫자 (0) | 2023.08.04 |
[알고리즘] 프로그래머스 | 두 정수 사이의 합, 핸드폰 번호 가리기 (0) | 2023.08.03 |