10진법을 3진법으로 바꾸는 과정에서 3의 배수인 경우에만 기존의 진법 변환과 같이 자리수가 변하는 것이 아니라 2 -> 4로 숫자가 증가하는 방식으로 숫자를 count 하며 자리수는 유지하게 된다. 이 방식으로 진법 변환을 해주면서 1의 자리 숫자부터 찾아 자리수를 확장하며 올라가면 된다.
코드는 매우 간단한데 막상 처음에 기존의 진법 변환에서 신경써줘야하는 부분들이 쉽게 떠오르지 않는다. 진법 변환의 원리를 제대로 이해하고 있거나 해당 문제에서 기존의 진법 변환과 달라지는 부분을 잘 캐치 했다면 어느정도 풀리는 문제라 생각한다.
코드 & 설명
defsolution(n):
answer = ''while n:
tmp = n % 3ifnot tmp:
tmp = 4
n -= 1
answer += str(tmp)
n //= 3return answer[::-1]