[프로그래머스][python]자연수 뒤집어 배열로 만들기

주연·2022년 2월 17일
0

Python 문제 풀이

목록 보기
6/20
post-thumbnail

문제

자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.

제한 조건
n은 10,000,000,000이하인 자연수입니다.

입출력 예

nreturn
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

profile
공부 기록

0개의 댓글