Lv2 - 124 나라의 숫자

LeeKyoungChang·2022년 4월 24일
0

Algorithm

목록 보기
178/203
post-thumbnail

📚 Lv2 - 124 나라의 숫자

124 나라의 숫자

 

이해

이 문제의 규칙으로
숫자가 1, 2, 4가 반복되면 구성된다.
[1, 2, 4]

1 2 4
11 12 14
21 22 24
41 42 44
111 112 ~
ex) 2일 때
일의 자리를 보면, 1 2 4 중 1번째 1을 선택

ex) 3일 때
일의 자리를 보면, 1 2 4 중 2번째 4을 선택

ex) 6일 때
일의 자리를 보면, 1 2 4 중 2번째 4을 선택
십의 자리를 보면, 1 2 4 중 1번째 1을 선택

ex) 9일 때
일의 자리를 보면, 1 2 4 중 2번째 4을 선택
십의 자리를 보면, 1 2 4 중 1번째 2을 선택

ex) 10일 때
일의 자리를 보면, 1 2 4 중 0번째 1을 선택
십의 자리를 보면, 1 2 4 중 2번째 4을 선택

일의 자리를 공통적으로 보았을 때 : (현재 숫자 - 1) % 3 결과 번째 숫자를 선택한다. (1 - 1)

십의 자리를 공통적으로 보았을 때 : ((현재 숫자 - 1) // 3 - 1) % 3 결과 번째 숫자를 선택한다. (2 - 1)

그러면 백의 자리는 어떻게 될까? (3 - 1)번
(((현재 숫자 - 1) // 3 - 1) // 3 - 1) % 3

n번 자리는? (n - 1)번
(현재 숫자 - 1)// 3 - 1(n - 1)번 붙고 마지막에 % 3을 한다.

➡️ 각 자리는 (현재 숫자 - 1) % 3 나온 결과 값으로 1 2 4 중 하나를 선택하고
➡️ 다음 숫자는 // 3으로 나누어 구한다.
➡️ 결국, 현재 숫자를 - 1 한 후, // 3한 값이 0보다 큰 경우 반복문을 돌리면 된다.
(0인 경우 종료하면 된다.)

 

소스

def solution(n):
    answer = ''
    
    while n > 0:
        n -= 1
        answer = '124'[n % 3] + answer
        n //= 3
    
    return answer
스크린샷 2022-04-24 오후 7 19 43
profile
"야, (오류 만났어?) 너두 (해결) 할 수 있어"

0개의 댓글