Algorithm/Programmers

[Python] 124 나라의 숫자

느낌표 공장장 2021. 4. 18. 23:44
def solution(n):
    answer = ''
    number = "124"
    while n>0 :
        n -= 1
        answer = number[n%3] + answer
        n = n // 3
        
    return answer

1. 각 index를 1을 빼준 후, 3으로 나눈 나머지를 '124'의 index로 가진다.

   ex) 30번째 -> 29 -> 124[2] = 4  ➡︎ 4

2. 위에서 나눈 몫에 대해 1을 빼고 3으로 다시 나눈 나머지를 '124'의 index로 가지며 앞의 값의 앞쪽에 붙여준다.

   ex) 9 -> 8 -> 124[2] = 4  ➡︎ 44

3. 2번을 반복한다. 

   ex) 2 -> 1 -> 124[1] = 2   ➡︎ 244

 

✔︎ 1을 빼는 이유

    : 인덱스는 0부터 시작하기 때문

 1 빼주지 않으면 10진법에서 1의 경우, 나머지가 1이 나오므로 124[1] = 2가 답으로 나오게 된다.

 

 

 

 


재귀함수를 이용하여 풀기 (다른 분의 풀이)

def solution(n):
    if n<=3:
        return '124'[n-1]
    else:
        q, r = divmod(n-1, 3) 
        return solution(q) + '124'[r]

divmod 함수(숫자를 두개 입력 받아서 몫과 나머지를 튜플 형태로 반환하는 함수)와 재귀함수를 이용하는 것이 포인트 ! 

'Algorithm > Programmers' 카테고리의 다른 글

[Python] 프린터  (0) 2021.04.22
[Python] 다음 큰 숫자  (0) 2021.04.19
[Python] 자연수 뒤집어 배열로 만들기  (0) 2021.04.17
[Python] 문자열 다루기 기본  (0) 2021.04.16
[Python] 완주하지 못한 선수  (0) 2021.04.12