124 나라의 숫자

gidori·2024년 5월 16일
0

프로그래머스(124 나라의 숫자)

문제


  • 124 나라에서는 10진법이 아닌 위의 표와 같은 규칙으로 수를 표현합니다.
  • 10진법이 주어졌을 때, 124 나라의 숫자로 변환해보자.

방법

  1. 계산의 편의성을 위해 0부터 시작하는 수라고 가정한다.
  2. 10진법의 수가 124 나라에서 몇 번째 자리수인지와 해당 자리수에서 몇번 째 위치하는 수인 지 구한다.
    N103132...3c1>=0N_{10} - 3^{1} - 3^{2} - ... 3^{c-1} >= 0
  3. 나머지 연산을 통해 124 나라의 숫자로 차례로 변환한다.

코드

def solution(n):
    # 계산의 편의성을 위해 n이 0부터 시작한다고 가정
    n -= 1
    
    # find c -> 124 나라의 자릿수
    tmp, c = n, 1

    while tmp >= 0:
        tmp -= 3**c
        c+=1
    
    c -= 1
    if c >= 2:
        n = tmp + 3**(c)
        print(n)
        
    # 124 나라의 숫자로 변환
    tmp2 = []
    for _ in range(c):
        if n % 3 == 0:
            tmp2 += '1'
        elif n % 3 == 1:
            tmp2 += '2'
        else:
            tmp2 += '4'
        n = n//3
    
    result = ''
    for tmp2_i in reversed(tmp2):
        result += tmp2_i

    return result

0개의 댓글