📌문제 설명
연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
📌제한 사항
- n은 1 이상 100,000,000 이하인 자연수입니다.
📌 Solution
3진법을 뒤집는다는것 오히려 좋았다. 나머지 처리만 계속 해주면서 그 값들에 대해서 다시 10진법으로 변환만 해주면 되었다.
def solution(n):
answer = 0
three=[]
while True:
if n<3:
three.append(n)
break
three.append(n%3)
n=n//3
cnt_three=1
leng=len(three)
for i in range(len(three)-1, -1, -1):
answer+=cnt_three*three[i]
cnt_three*=3
return answer
그러나 위의 경우보다 더 효율적으로 문제를 해결할 수 있는 방법이 있었다.
바로 int형 변환을 활용하여 바로 3진법을 10진법의 수로 바꿔주면 되었었다.
def solution(n):
tmp = ''
while n:
tmp += str(n % 3)
n = n // 3
answer = int(tmp, 3)
return answer
✨ 문제 해결하며 알게 된 점