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

김민성·2023년 4월 13일
0
post-thumbnail

문제 설명

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

제한 조건

  • n은 10,000,000,000이하인 자연수입니다.

입출력 예

nreturn
12345[5,4,3,2,1]

처음 내가 시도했던 방법

  1. sorted를 해서 정렬하고 reverse = True로 뒤집는다
  2. 그 다음 리스트 컴프리핸션으로 정답 리스트를 만들어서 리턴한다.
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

핵심

  1. list를 문자열로 변환한다
  2. reverse()함수를 사용한다.
  3. map을 사용해서 int로 바꾼 후 list에 집어넣는 방법을 알아야 한다.

reversed 함수가 기억이 나지 않을때는

return [int(i) for i in str(n)][::-1]

을 사용해서 풀 수도 있다.


파이썬에는 reverse() 함수와 reversed() 함수가 있다.

그 차이는 무엇일까?

  1. reverse() 함수는 list 타입에서 제공하는 함수이다.
    list.reverse()를 하지 않는다면 에러가 발생한다.
  1. reversed() 함수는 내장함수이다.
    reverse(객체)로 사용한다.

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) 를 사용하자.

profile
정리하는 개발자

0개의 댓글