본문 바로가기

programming study/Algorithm

[프로그래머스] 3진법 뒤집기 - python 풀이

본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다

파이썬 코드

# 3진법 뒤집기
def solution(n):
    # 입력받은 수 n을 3진법으로 변환하기

    # 3진수를 저장하는 변수(문자열)
    ternary = ''

    # 3진수 변환
    # n이 3보다 크면 계속 나누기
    while n >= 3:
        # 나머지는 ternary에 넣기(문자열 변환)
        ternary += str(n % 3)
        # n에 3을 나눈 몫을 넣기
        n = n // 3
    # 3으로 계속 나눈 몫이 3이하이면 ternary에 넣기(문자열 변환)
    ternary += str(n)
    # 위의 로직은 앞뒤가 반전된 3진수를 만들게 된다.
    # ternary는 문자열이므로 바로 10진법으로 변환
    answer = int(ternary, 3)

    return answer

Comment

3진법으로 변환하기 위해서는 while문의 조건을 이용하여 나눈 몫과 나머지를 조건에 맞게 변수에 넣어준다. 위의 코드는 문제에서 제시한대로 바로 뒤집힌 3진수를 만들기 때문에 while문 처리 후 바로 int함수로 10진법으로 변환한다. 여기서, int로 특정 진법을 10진법으로 변환시에는 첫 번째 인자가 문자열이어야한다. 그러므로 ternary를 처음에 문자열로 선언하였고 while문 처리에서 나머지, 몫을 더하는 것도 문자열이었기 때문에 +연산으로 간편히 만들어 낼 수 있었다.

Reference

프로그래머스