자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
n result
45 7
125 229
입출력 예 설명
입출력 예 #1
n (10진법) n (3진법) 앞뒤 반전(3진법) 10진법으로 표현
45 1200 0021 7
따라서 7을 return 해야 합니다.
입출력 예 #2
n (10진법) n (3진법) 앞뒤 반전(3진법) 10진법으로 표현
125 11122 22111 229
따라서 229를 return 해야 합니다.
주어진 수를 n진법으로 나타내는 방법은 간단하다. while문의 조건의 주어진 수를 넣어 주어진 수가 0이 되면 종료되도록 설정하고, 빈 배열을 만들어 주어진 수를 n으로 나눴을 때의 나머지를 빈 배열에 넣고 주어진 수는 n으로 나눈 수로 갱신시켜준다. while문이 끝나면 주어진 수를 n으로 나눴을 때의 나머지를 저장한 빈 배열을 거꾸로 돌려주면 주어진 수에 대한 n진법 표현이 도출된다. 이 문제에서는 고맙게도 앞뒤 반전한 수를 원하므로 마지막 과정은 생략해야 한다. n진법을 10진법으로 바꾸기 위해서는 n**(n진법으로 나타낸 길이 - 1 - i) \* n진법으로 나타낸 수의 i번째 계수
를 모두 더해주면 구할 수 있다.
def solution(n):
answer = 0
tmp=[]
while n:
tmp.append(n%3)
n//=3
for i in range(len(tmp)):
answer+=3**(len(tmp)-1-i)*tmp[i]
return answer