3진법 변경과 비슷한 방법으로 푼다. 단, 3의 배수일 때 '0'이 아닌 '4'를 answer 에 추가해야 한다.
일반적인 3진법에서 3의 배수는 자릿수가 하나 올라간다.
예를 들어서, 11 에서는 102 가 12가 되면 110 으로 자릿수가 하나 올라간다.
2 == 2
3 == 10
11 == 102
12 == 110
따라서, n = n //3 을 한 후에 -1 을 하여 자릿수를 하나 내리는 효과를 준다.
(이 부분이 제일 생각하기 어려웠다.)
def solution(n):
answer = ''
while n > 0:
print(n)
if n % 3 == 0:
answer += '4'
n = n // 3 - 1
else:
answer += str(n % 3)
n //= 3
return answer[::-1]
1 // 3 == 0, 1 / 3 == 0.3333..