코딩 테스트/Python

3진법 뒤집기

susinlee 2024. 12. 15. 23:08

[문제]

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

 

 

[풀이]

먼저 10진법에서 3진법으로 변환하는 과정을 살펴보자.

123 ÷ 3 = 41 나머지 0         

41 ÷ 3 = 13 나머지 2            

13 ÷ 3 = 4 나머지 1         

4 ÷ 3 = 1 나머지 1           

1 ÷ 3 = 0 나머지 1 

몫이 0이 되었다면 나머지 부분을 아래서 위로(역순으로) 읽어준다.

123을 3진법으로 변환하면 11120이 된다.

 

이를 이용해서 n을 3진법으로 변환해준 뒤 문제서 요구한대로 뒤집어주면 되는데 

뒤집을 필요없이 나머지를 구하는 과정에서 역순이 아닌 원래 순서대로 연결하면 뒤집힌 모양이 된다.

 

이를 다시 10진법을 변환해서 리턴한다. 이는 int 함수로 손쉽게 할 수 있다.

 

def solution(n):
    base3 = ''
    
    while n != 0:
        base3 += str(n % 3)
        n //= 3
    
    base10 = int(base3, 3)
    
    return base10

 

 

 

'코딩 테스트 > Python' 카테고리의 다른 글

삼총사  (0) 2024.12.16
이상한 문자 만들기  (0) 2024.12.15
최대공약수와 최소공배수  (0) 2024.12.15
행렬의 덧셈  (0) 2024.12.15
부족한 금액 계산하기  (0) 2024.12.15