## 의사 코드 ##
# 진수변환
# 10진수 -> n진수
# 직접 코드로 작성해야 함
# divmod(n1, n2) -> (n1을 n2로 나눈 몫, n1을 n2로 나눈 나머지)
# n진수 -> 10진수
# int('숫자', n진법)
통과한 코드
def convert(num, n):
# 진수를 역순으로 표현
rev_base = ''
while num > 0:
# num을 n으로 나눈 몫과 나머지
num, mod = divmod(num, n)
rev_base += str(mod)
# num을 n진법으로 표현된 수 => rev_base[::-1]
# 3진법으로 바꾼 수를 앞뒤 반전하기 위해 rev_base 그대로 반환
return rev_base
def solution(n):
# 3진법으로 바꾼 수를 앞뒤 반전한 값
third = convert(n, 3)
# 3진수 -> 10진수
return int(third, 3)
-> 10진법을 n진법으로 변환한 값을 앞뒤 반전한 값으로 반환하는 함수와 그 값을 다시 10진법으로 반환하는 함수로 구현
divmod(n1, n2)
반환 값: (n1을 n2로 나눈 몫, n1을 n2로 나눈 나머지)
-> 튜플 형태로 반환
다른 풀이
def solution(n):
tmp = ''
while n:
tmp += str(n % 3)
n = n // 3
answer = int(tmp, 3)
return answer