자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
n | return |
---|---|
12345 | [5,4,3,2,1] |
처음 내가 시도했던 방법
- sorted를 해서 정렬하고 reverse = True로 뒤집는다
- 그 다음 리스트 컴프리핸션으로 정답 리스트를 만들어서 리턴한다.
def solution(n):
r_num = sorted(str(n),reverse = True)
answer = [int(i) for i in r_num]
return answer
-> 테스트 케이스를 성공하지 못했다
-> 불필요한 sort를 해서 그런듯 하다.
정답
def solution(n):
r_num = list(str(n))
r_num.reverse()
answer = list(map(int,arr))
return answer
핵심
- list를 문자열로 변환한다
- reverse()함수를 사용한다.
- map을 사용해서 int로 바꾼 후 list에 집어넣는 방법을 알아야 한다.
reversed 함수가 기억이 나지 않을때는
return [int(i) for i in str(n)][::-1]
을 사용해서 풀 수도 있다.
그 차이는 무엇일까?
reversed() 함수를 출력할 때는
list_ms = list(reversed(l))
tuple_ms = tuple(reversed(t))
string_ms = str(reversed(s))
#예제 : test
# 출력
['t','s','e','t']
('t','s','e','t')
<reversed object at 0x000002E2699BA130>
string은 출력 방법이 다르다.
-> 그냥 문자열은 string[::-1] 쓰거나 ''.join(string_ms) 를 사용하자.