※ 본 사진과 해당 게시글 내용의 문제 모두 프로그래머스[Programmers]사이트에 발췌해왔습니다.
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요.
예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
제한 조건 :
n은 10,000,000,000이하인 자연수입니다.
<입출력 예>
n | return
12345 | [5,4,3,2,1]
def solution(n):
str_n = list(str(n))
answer = list(map(int,list(reversed(str_n))))
return answer
좋은 마음가짐은 아닐 수 있지만
내심 이번 문제에서 짧게 알고리즘을 끝내서 기분이 좋았다...ㅎ 😂
우선
뒤집은 배열을 만들기 위해서 입력값을 쪼개 리스트를 만들어주는 것이 먼저다.
이전 문제와 동일하게 list(str(n))
을 통해 각 자리 숫자들을 문자열로 쪼개 리스트로 만들어 주었고
< 가장 내부에 있는 reversed()
함수를 통해 뒤집기 > ✅
< 그 다음 list()
함수를 통해 다시 리스트화 해주기 > ✅
( reversed()
함수를 수행하면 "<list_reverseiterator object at 0x00....>" 객체화만 되서 꼭 해주어야한다. )
< 리스트 값들을 list(map(int,))
함수를 통해 정수화&배열 > ✅
리턴❗❗ 끝❗❗
(1)
def digit_reverse(n):
return [int(i) for i in str(n)][::-1]
인덱싱을 활용한 깔끔한 리스트 컨프리헨션 풀이법이다.
우선 [int(i) for i in str(n)]
로 각 자릿수를 문자열 리스트 변환한 후 리스트 컨프리헨션으로 각 문자열 자릿수를 정수화 해주어 리스트를 만들어준 후,
[::-1]
인덱싱으로 역순출력을 해주었다.
(2)
def digit_reverse(n):
ret =[]
for i in str(n):
ret.append(int(i))
ret.reverse()
return ret
이 풀이는 .reverse()
라는 함수를 사용했는데
이 함수는 "리스트 객체 하위 함수" 로 내가 사용했던 reversed()
와 기능은 같다.
먼저
for문으로 빈 리스트에 문자열 자릿수 하나씩 append()
해준 다음,
ret리스트에 .reverse()
시켜서 return한다.