본문 바로가기
Engineering WIKI/Programmers

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

by wonos 2022. 4. 5.

 

 

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

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

programmers.co.kr

 

내 풀이

def solution(n):
    answer = 0
    three_list = list()
    
    while n != 0:
        three_list.append(n % 3)
        n = int(n / 3)        
        
        if n == 0:
            break
    pow_val = len(three_list) - 1
    
    for i in three_list:
        answer += i * pow(3, pow_val)
        pow_val -= 1
        
    
    return answer

 

다른 방법

def solution(n):
    tmp = ''
    while n:
        tmp += str(n % 3)
        n = n // 3

    answer = int(tmp, 3)
    return answer

 

  • 10 → 2 로 갈 때는 bin(num)을 활용하거나 format(num, 'b')을 활용할 수 있음.
  • 2 → 10 으로 갈 때는 int() 함수를 활용해서 int(num, 2)로 작성하면 '2진수인 num값을 10진수'로 변환 가능