Today
Total
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
관리 메뉴

기억은 짧고 기록은 길다

[프로그래머스/Programmers] 3진법 뒤집기 - Python 본문

CodingTest/programmers

[프로그래머스/Programmers] 3진법 뒤집기 - Python

ukunV 2021. 9. 4. 00:26

Link

 

코딩테스트 연습 - 3진법 뒤집기

자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수

programmers.co.kr

 

Solution

해당 문제는 10진수를 n진수로 변환하는 방법만 알고 있었다면 쉽게 해결할 수 있는 문제였다.

10진수를 n진수로 변환하는 방법, n진수를 n진수로 변환하는 방법을 작성해뒀으니 참고바란다.

def reverse_ternary(n):
    ter = ''

    while n > 0:
        n, mod = divmod(n, 3)
        ter += str(mod)

    return ter

def solution(n):
    return int(reverse_ternary(n), 3)
🔑 key point: 10진수 -> n진수 변환법

def solution(n, q):
    rev_base = ''

    while n > 0:
        n, mod = divmod(n, q)
        rev_base += str(mod)

    return rev_base[::-1]
📌 Tip: n진수 -> n진수 변환법

ex) 45_(10) -> solution(45, 3)_(3) -> solution(int(solution(45, 3), 3), 9)_(9)
    10진수를 3진수로 변환 후 9진수로 변환하고 싶을때에는 변환한 3진수를 다시 10진수로
    변환해준 다음 9진수로 변환해준다.
solution(int(solution(45, 3), 3), 9)
Comments