본문 바로가기

코딩테스트/Python

[프로그래머스] 3진법 뒤집기

내 코드

def solution(n):
    a = ''
    
    while n>=3:
        a += str(n%3)
        n = n//3
    a+=str(n)
    
    a = int(a)
    
    return sum([int(j)*(3**(len(str(a))-i-1)) for i,j in enumerate(str(a))])

a에 3진법 뒤집은 수를 저장하고 10진법으로 바꿔서 출력하였다.

 

다른사람 코드

def solution(n):
    tmp = ''
    while n:
        tmp += str(n % 3)
        n = n // 3

    answer = int(tmp, 3)
    return answer

n을 while문을 돌릴때 0보다 크게하면 나처럼 마지막에 한번더 더해줄필요가 없다. 10진법으로 바꿀때는 int(tmp,3)이렇게 적으면 바로 10진법이 출력된다. 이때 int안의 3진법 인자는 문자열이여야한다.