Yeonnnnny

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

코딩테스트

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

yeonny_do 2025. 2. 20. 10:40

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/12932

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

 

1. 1차 시도

 

일단 첫 번째 자리수부터 리스트에 넣어 마지막에 반환할 때 역순으로 뒤집자는 생각으로 풀었다.

def solution(n):
    answer = []
    
    m = len(str(n)) - 1  

    while n > 0:
        a = n // (10 ** m)  
        answer.append(a)
        n -= a * (10 ** m)  
        m -= 1  

    return answer[::-1]

 

이렇게 했는데 실패인 경우가 있었다. 

 

 

2. 2차 시도

 

마지막 자리수부터 리스트에 넣는 방법을 생각했다.

예를 들어 12489 라면,

 

  1. 12489%10 = 9이고, 9를 리스트에 넣는다.
  2. n = 12489//10 = 1248로, 마지막 자리수의 값을 제거한다.

 

  1. 1248%10 = 8, 8을 리스트에 넣는다.
  2. n = 1248//10=124

... 

 

n 이 0이하가 되기 전까지 반복한다. 그러면 리스트를 역순으로 변환할 필요가 없다.

 

def solution(n):
    answer = []
    
    while n > 0:
        answer.append(n%10)
        n //= 10
    
    return answer

 

성공!

 

 

3. 다른 사람 풀이

 

진짜.. 대단한 사람들이 많다..

 

def solution(n):
	return list(map(int, reversed(str(n))))

 

 

  1. str(n) : n을 문자열로 변환한다. 1234->"1234"
  2. reversed(str(n)) : 변환된 문자열을 뒤집는다. "1234"->"4321"
  3. map(int, reversed(str(n))) : 각 문자 ('4', '3', '2', '1')를 int로 변환하고 결과는 map객체다 된다.
  4. list(map(int, reversed(str(n)))) : map 객체를 리스트로 변환한다. [4,3,2,1]

 

map 객체란?

map 객케는 반복 가능한 요소를 변환하는 함수이다. map() 함수는 주어진 함수를 반복 가능한 객체의 각 요소에 적용한 결과를 반환하는 반복자이다. 

map(변환할 함수, 반복 가능한 객체)