1200
인데, 우리는 뒤집은 3진법이 필요하다.result
리스트에 담아준다.sum
에 3진법을 계산한 답들을 더해주었다.def solution(n):
answer = 0
result = []
sum = 0
while n:
a, b = divmod(n, 3)
result.append(b)
n = n//3
for i in range(len(result)):
# 0, 1, 2, 3
sum += ((3**(len(result)-i-1))*result[i])
answer = sum
return answer
생각해보니 divmod
를 사용할 필요 없이 걍 n%3
을 저장해 주면 되는구나..;;
def solution(n):
tmp = ''
while n:
tmp += str(n % 3)
n = n // 3
answer = int(tmp, 3)
return answer
int
가 쓰였길래 뭐지? 하고 찾아보니
int('숫자(혹은 16진법의 문자와 같은 문자)로 이루어진 문자열',해당 진법)
이라고 한다.
바로 10진법 수로 계산해주는 것..;; 세상에 이런 용도가 있는지 처음 알았다;
해당 코드에서 int(tmp, 3)
는 tmp
문자열을 3진법으로 변환해 준다는 것이다.
나처럼 sum += ((3**(len(result)-i-1))*result[i])
이렇게 3진법을 직접 계산해줄 필요가 없음..