[python/알고리즘] 프로그래머스 삼진법 뒤집기

·2024년 11월 29일
0


원 문제 링크

접근 방법

  • 어떤 자연수를 삼진법으로 표현하기 위해서는 그 자연수를 몫이 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

추가로 알아두기

  • python list 뒤집기
# 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']

참고자료 - 삼진법
참고자료 - 리스트 뒤집기

profile
To Dare is To Do

0개의 댓글