[프로그래머스/파이썬] Level 1 3진법 뒤집기

https://programmers.co.kr/learn/courses/30/lessons/68935#


알고리즘 분류

  • 구현

문제풀이

논리는 동일하지만 코드2가 훨씬 간단하다.

예를 들어, 45가 0이 될 때까지 나머지연산을 반복하면 0021이 된다.
이를 3진법 정수로 바꿔주면 정답이다.

소스코드

코드1(내가 푼 코드)

def solution(n):

    array=[]
    while (n//3)>0:
        array.append(str(n%3))
        n=n//3
    array.append(str(n))
    number=str(int("".join(array)))
    
    if len(number)>1:
        temp=3*int(number[0])+int(number[1])
    else:
        return int(number)

    for i in range(2,len(number)):
        result=3*temp+int(number[i])
        temp=result
    
    return temp

코드2(찾은 코드)

def solution(n):
    temp=""
    while n:
        temp+=str(n%3)
        n=n//3
    
    return int(temp,3)

좋은 웹페이지 즐겨찾기