알고리즘

[프로그래머스] level 2- 124 나라의 숫자

u0jin 2020. 12. 26. 17:45

 

programmers.co.kr/learn/courses/30/lessons/12899

 

코딩테스트 연습 - 124 나라의 숫자

 

programmers.co.kr

 

3진법의 개념을 알고 풀어주면 쉽게 풀릴수있다.

 

< 풀이 코드 >

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

 

 

3개의 숫자로 돌아가기때문에 3진법으로 생각하는게 맞는 방향으로 보인다.

예시에 나와있듯이, 

1 ,2 ,3 은 124 나라에서 계산할때, 그대로 문자열안에서만 뽑아내면 되기때문에

if 문으로 해당 조건을 만들어 주었다.

 

그외의 숫자에 대해서는 solution 을 재귀로 돌려서 계산할수 있게 하였다.

 divmod(n,3) 이 아닌 divmod(n-1,3) 인 이유는 문자열이 '124'로 지정된 상태에서 재귀를 돌리다보니,

지정된 상태에 맞게 조정하다가 결정된 것이다.

 

 


divmod(a,b)

a를 b로 나누었을때, 몫과 나머지를 tuple 데이터 타입으로 반환한다.

ex) divmod(10,3) > (3,1)