본문 바로가기

코딩테스트/Python

[프로그래머스] 124 나라의 숫자

내 코드

def solution(n):
    import itertools
    arr = ['1','2','4']    
    i=1
    answer =''
    
    while True:   
        if n <= 3**i :
            n-=1
            if n==0:
                return answer.ljust(i,'1')
            while n!=0:
                answer+= arr[n%3]
                n = n//3
            return ''.join(reversed(answer)).rjust(i,'1')
        else:
            n-=3**i
        i+=1

ㅠ 너무 복잡하게 푼거같다.. 자리수를 찾은 다음 해당 위치에 있는 숫자를 계산했다. product는 시간초과나더라ㅠ

 

 

다른사람 코드

def change124(n):
    num = ['1','2','4']
    answer = ""


    while n > 0:
        n -= 1
        answer = num[n % 3] + answer
        n //= 3

    return answer

while을 두번 안쓰고 한번만 썻다!! n에서 1을 빼주는 이유는 인덱스때문에 빼고 계산해줬다.