본문 바로가기

Python 연습문제

[고민문제]자연수 뒤집어 배열로 만들기 (쉬운길을 두고 돌아가지 말자)

 

 

처음 접근은 각자릿수 뽑아내는것을 생각해서 나머지를 활용하는 방법을 생각 했고

 

print(12345%10)

print((12345%100-12345%10)//10)

print((12345%1000-12345%100)//100)

print((12345%10000-12345%1000)//1000)

print((12345%100000-12345%10000)//10000)

print((12345%1000000-12345%100000)//100000)

이렇게 결과가 나오길레 될줄 알았다. 그래서 코드를 구성 해봤는데

def solution(n):
    answer = []
    while i<10000000000:
        i=1
        a=(n%10^i-n%10^(i-1))//10^(i-1)
        answer.append(a)
        i=i+1
        if a==0:
            break
    return answer

이것을 돌려보니 소요시간이 너무 오래 걸렸다. 질문한 결과 쉬운 문제를 너무 돌아가느 방법을 택했고

 

심지어 저 중간에 들어간 수식조차 규칙적으로 나오지 않았다. 왜냐하면 i=1이 들어가면 첫항빼고 나머지는 0이 되거나 1이 되어야 하는데 이런 규칙성을 내가 만들수가 없었다.

 

그래서 주어진 숫자를 str 형태로 변환하면 문자열로 되기 떄문 각 '자리'에 해당하는 문자들을 뽑아 올 수 있다는 힌트를 받았고 그 결과

 

 

-를 활용하여 코드를 짯다 그 결과

 

def solution(n):
    answer = []
    for i in range(1,len(str(n))+1):
        answer.append(int(str(n)[-i]))
    return answer


print(solution(12345))

 

 

 

끝.