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

강주형·2022년 8월 10일
0

https://school.programmers.co.kr/learn/courses/30/lessons/68935

월간 코드 챌린지 시즌1

def solution(n):
    three = ''
    while n > 0:
        three += str(n % 3)
        n = int(n / 3)

    return sum([int(three[-(i+1)]) * 3**i for i in range(len(three))])

while문은 10진법 -> 3진법 변환 (자동으로 뒤집힘)
return은 3진법 -> 10진법 변환함

10진법을 3진법으로 변환할 때는 3으로 나눴을 때 나머지를 쭉 붙히면 됨

3진법을 10진법으로 변환할 때는 각 ii 번째 자리에 대해서 3i13^{i-1} 한 것을 모두 더함

예시

  • 0021:0×33+0×32+2×31+1×30=70021: 0\times{3^3}+0\times{3^2}+2\times{3^1}+1\times{3^0}=7

타인 코드
def solution(n):
    tmp = ''
    while n:
        tmp += str(n % 3)
        n = n // 3

    answer = int(tmp, 3)
    return answer

기가 막히게 풀었다고 생각했는데 이런 코드도 있었음..

int('n진수', n) -> 10진수 숫자로 변환함
int에 이런 기능이 있는 줄 몰랐음

예시

int('0021', 3)
7
profile
Statistics & Data Science

0개의 댓글