[Python] Programmers. 월코챌 시즌1 - 3진법 뒤집기

월코챌 시즌1 - 3진법 뒤집기

문제 링크

풀이 코드

  • 개인적으로 진법 변환 문제들은 피해온 편이라 까다로웠습니다.
  • 그래도 침착하게 생각하면 쉽게 풀리는 문제입니다.
  • 기본적인 3진법으로 바꿀때는 아래 코드에서 뒤집어줘야합니다. (해당 문제에서는 뒤집어서 사용하느라 그냥 뒀습니다.)
  • 십진법으로 다시 바꾸는 플로우는 다음과 같습니다.
    • 앞의 0을 덜어내기 위해 int로 변환 (사실 안 덜어줘도 상관 없습니다. 어차피 0이 곱해지는거라)
    • 거꾸로 뒤집어 줍니다. (여기도 역시 안 뒤집어줘도 상관 없습니다. 대신 뒤집지 않으면 아래 for문이 0부터 시작하면 안되고 뒤에서부터 앞으로 와야합니다. -> 이 부분이 귀찮아서 그냥 뒤집어줬습니다.)
    • 그 후에는 일반적인 10진법 변환대로 풀면 됩니다.
  • 진법 변환을 다시 복습 할 수 있는 좋은 문제였습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 월코챌 시즌1 - 3진법 뒤집기
def make3(n):
    temp = ''
    mod = 3
    while True:
        temp += str(n % 3)
        n //= mod
        if n == 0:
            break
    return temp


def make10(n):
    n = str(n)[::-1]
    temp = 0
    mul = 1
    for i in range(len(n)):
        temp += int(n[i]) * mul
        mul *= 3
    return temp


def solution(n):
    answer = 0
    nnn = make3(n)
    answer = make10(int(nnn))
    return answer

비고