Python/CoTe

[programmers] 3진법 뒤집기

joannekim0420 2022. 3. 3. 15:01
728x90

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

 

코딩테스트 연습 - 3진법 뒤집기

자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수

programmers.co.kr

 

 

※ 3진법 구하는 방법 ※

 

n을 3진법으로 바꾼다고 하면, 

n이 3으로 나누어 떨어질 때까지 나누면서 나머지를 챙긴다.

 

예를 들어, 45를 3진법으로 표현하면,

45/3 = 15 (나머지 0)

15/3 = 5 (나머지 0)

5/3 = 1 (나머지 2)

 

마지막에 3으로 나눈 몫과 나머지들을 쭉 연결 시켜, 

1200이 된다. 

 

3진법을 구하는 것을 while문으로 반복시켜 얻는다.

def solution(n):
    list_ = []
    answer =0
    if n < 3:
        return n
    while n//3>0:
        list_.append(n%3)
        if n//3<3:
            list_.append(n//3)
            break
        n = n//3

    for i in range(len(list_)-1):
        answer+= 3**(len(list_)-i-1)*list_[i]
    return answer+list_[-1]