programmers.co.kr/learn/courses/30/lessons/12899
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)
'알고리즘' 카테고리의 다른 글
[프로그래머스] level 2- 주식가격 (2) | 2021.01.05 |
---|---|
[프로그래머스] level 2 - 큰 수 만들기 (탐욕법) (4) | 2020.08.27 |
[백준] 11399 (탐욕법) (2) | 2020.08.22 |
[프로그래머스] level 1 - 체육복 (탐욕법) (0) | 2020.08.20 |
[프로그래머스] level 1 - 다트게임 (0) | 2020.05.16 |
댓글