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

알고리즘 저장소·2021년 2월 4일
0

프로그래머스

목록 보기
7/29
post-custom-banner

1. 요약

  • 주어진 숫자를 3진법으로 표현한다.
  • 3진법으로 표현 된 수를 앞 뒤로 뒤집고, 10진법으로 변환하여 답을 구해야한다.

2. 아이디어

  • n를 3진법으로 변환 할 때.
    1. num = ''
    2. n을 3으로 나눈 나머지를 str타입으로 변환 후, num값 앞에 이어 붙인 후 num에 저장한다.
    3. n을 3으로 나눈 몫을 n에 저장한다.
    4. n이 0이 될 때 까지, 2., 3.을 실행한다.

  • 10진법으로 변환 할 때는, 3진법으로 얻은 수를 뒤집지 말고, 반복문을 잘 이용해서 구하면된다.
ternary_num = '1200' # 3진법으로 변환된 수
# ternary_num = [1,2,0,0] 
ternary_num = list(map(int, list(ternary_num)))
answer = 0
# i가 0부터 시작하기 때문에, 수를 뒤집을 필요가 없다.
# 최종적으로 answer = 7
for i in range(len(ternary_num)):
	answer += ternary_num[i] * 3 ** i 

3. 코드

def get_ternary(n):
    num = ''
    
    while n > 0:
        num =  str(n % 3) + num
        n = n // 3
    
    return list(map(int, list(num)))

def get_decimal(n):
    size = len(n)
    num = 0
    for i in range(size):
        num += n[i] * 3 ** i
    
    return num

def solution(n):
    num = get_ternary(n)
    num = get_decimal(num)
    return num
post-custom-banner

0개의 댓글