자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
제한 조건
n은 10,000,000,000이하인 자연수입니다.
입출력 예
n | return |
---|---|
12345 | [5,4,3,2,1] |
def solution(n):
list1 = []
while n != 0:
list1.append(n%10)
n = n // 10
return list1
def solution(n):
return list(map(int, str(n)[::-1]))
1) [::-1]
arr[a:b:c] index a부터 b까지 c의 간격으로 배열을 만들라는 뜻이다.
a = None이면 처음부터
b = None이면 끝까지
c = None이라면 한 칸 간격
>> arr = [1,2,3,4,5]
>> arr[::] #처음부터 끝까지 한 칸 간격
[1,2,3,4,5]
>> arr[::-1] ## 처음부터 끝까지 -1칸 간견으로 (역순)
[5,4,3,2,1]
>>arr[1:3:1] ## index1부터 index2(3-1)까지 한 칸 간격
[2,3]
>>arr[2::-1] ## index4부터 끝까지 -1칸 간격으로 (역순)
[3,2,1]
이 슬라이싱은 문자열, 리스트, 튜플 다 가능하다!
2) str(n)[::-1]
str로 변환시켜 주는 이유:
str쓰지 않으면, TypeError: 'int' object is not subscriptable 라는 오류가 발생한다. 이건 인덱스를 갖지않는 값에 인덱스를 가지게 코드를 짤 경우 발생하는 오류다.
문제에선 12345라는 정수이므로 문자열로 바꾼 후 슬라이싱을 적용해 준다.
3) map(int, str(n)[::-1])
map(function, iterable)
map은 함수와 반복가능한(iterable) 자료형을 입력으로 받는다. map은 입력받은 자료형의 각 요소를 함수 f가 수행한 결과를 묶어서 돌려주는 함수이다.
참고) https://wikidocs.net/32#map, https://blockdmask.tistory.com/531