자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
n | result |
---|---|
45 | 7 |
125 | 229 |
입출력 예 설명
답을 도출 하는 과정은 다음과 같습니다.
따라서 7이 return
# 첫 번째 방법(재귀함수사용)
def ternary(n, result):
a = divmod(n, 3)
if a[0] == 1 or a[0] == 2:
result = result + str(a[1]) + str(a[0])
return result
else:
result = result + str(a[1])
return ternary(a[0], result)
def solution(n):
return int(ternary(n, ''), 3)
# 두 번째 방법(while문 사용)
def solution(n):
result, number = '', n
while True :
a = divmod(number, 3)
if a[0] == 1 or a[0] == 2:
result = result + f'{a[1]}' + f'{a[0]}'
break
else:
result = result + f'{a[1]}'
number = a[0]
return int(result, 3)
def solution(n):
tmp = ''
while n:
tmp += str(n % 3)
n = n // 3
answer = int(tmp, 3)
return answer
간단하게 생각하는 사고는 늘 어려운 것 같습니다.
결론적으로 푸는 방식은 비슷하나 while문 처리가 매우 직관적입니다.
divmod를 쓰지 않았는데 더 깔끔하네요.