[알고리즘] 자연수 뒤집어 배열로 만들기

DongGyu Jung·2021년 10월 13일
0
post-thumbnail

※ 본 사진과 해당 게시글 내용의 문제 모두 프로그래머스[Programmers]사이트에 발췌해왔습니다.

❓ 문제

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

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

<입출력 >
n	| return
12345	| [5,4,3,2,1]

❗ 풀이

My Code

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한다.

0개의 댓글