
원 문제 링크
접근 방법
- 어떤 자연수를 삼진법으로 표현하기 위해서는 그 자연수를 몫이 3보다 작아지기 전까지 계속 3으로 나누고, 그 과정에서 발생한 나머지들을 역순으로 정렬하면 된다.
예시
45
- 45 / 3 = 15, 나머지 0
- 15 / 3 = 5, 나머지 0
- 5 / 3 = 1, 나머지 2
- 1 / 3 = 0.33.., 나머지 1
- 나머지 [0, 0, 2, 1]을 역순으로 정렬하면 [1, 2, 0, 0]
- 맞는지 확인해보면, 3^3(27) + 3^2(9) * 2 = 27 +18 = 45
71
- 71 / 3 = 23, 나머지 2
- 23 / 3 = 7, 나머지 2
- 7 / 3 = 2, 나머지 1
- 2 / 3 = 0.66.., 나머지 2
- 나머지 [2, 2, 1, 2]을 역순으로 정렬하면 [2, 1, 2, 2]
- 맞는지 확인해보면, 54 + 9 + 6 + 2 = 71
답안 코드
def solution(n):
answer = []
while n > 0:
answer.append(n % 3)
n //= 3
answer.reverse() # 삼진법 표현 완성. 굳이 다시 뒤집을 필요 X
result = 0
for i, number in enumerate(answer):
result += (3 ** i) * number
return result
추가로 알아두기
# 1
a = ['a', 'b', 'c']
a.reverse()
print(a)
# ['c', 'b', 'a']
# 2
a = ['a', 'b', 'c']
b = a[::-1]
print(b)
# ['c', 'b', 'a']
# 3
a = ['a', 'b', 'c']
b = list(reversed(a))
print(b)
# ['c', 'b', 'a']
참고자료 - 삼진법
참고자료 - 리스트 뒤집기