본문 바로가기
코딩공부/프로그래머스 (python)

[프로그래머스] 3진법 뒤집기 (Python)

by CodingKwon 2022. 3. 30.

문제 링크 (Level 1)

https://programmers.co.kr/learn/courses/30/lessons/68935?language=python3 

 

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

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

programmers.co.kr

 

나의 코드 (Python)

def solution(n):
    answer = 0
    arr = ""    # 삼진법을 임시 저장할 문자열

    while n > 0:    # 삼진법 계산
        arr += str(n % 3)
        n //= 3

    arr = arr[::-1]     # 문자열을 반대로 정렬
    cnt = 1

    for i in arr:   # 다시 십진법으로 계산
        answer += int(i) * cnt
        cnt *= 3
        
    return answer

 

1. 삼진법을 계산하기 위해서 %3으로 나머지를 구합니다.

2. 낮은 숫자부터 1, 3, 9, 27을 곱하기 위해 arr을 역순으로 정렬합니다.

3. 십진법으로 다시 변환합니다.

 

 

댓글