문제: 37. 124 나라의 숫자
- 124 나라가 있다. 10진법이 아닌 자신들만의 규칙으로 수를 표현한다.
- 124 나라에는 자연수만 존재한다.
-
124 나라에는 모든 수를 표현할 때, 124만 사용한다.
0진법 124 나라 10진법 124 나라 1 1 6 14 2 2 7 21 3 4 8 22 4 11 9 24 5 12 10 41
-
자연수 n이 매개변수로 주어질 때, 124 나라에서 사용하는 값으로 바꿔서 리턴해라.
- 규칙을 찾아보자.
- 3이 나오면 4를 출력한다.
- 4가 나오면 11을 출력한다.
- 5가 나오면 12를 출력한다
- 6이 나오면 14를 출력한다.
- 7이 나오면 21을 출력한다.
- 8이 나오면 21을 출력한다.
- 9가 나오면 24를 출력한다
- 10이 나오면 41을 출력한다.
-> 3진법과 굉장히 비슷하다. 1은 1 2는 2 3은 10 4는 11 5는 12 6은 20
결국 아이디어가 생각낮 않았다.
- 아무리 써봐도 좀처럼 규칙이 눈에 들어오지 않았다.
- 나머지가 1이라면 1, 나머지가 2라면 2, 나머지가 0이라면 숫자를 뒤에서부터 만들어나가는 것이 풀이방법이다.
- 나머지가 0일 때, 4로 바꾸어주는 부분에서 몫을 1 뺴주어야 한다.
- 그래야 3번의 사이클에 맞춰서 동작이 가능해진다.
다른 사람 풀이
def solution(n):
num = ['1', '2', '4']
answer = ""
while n > 0:
n -= 1
answer = num[n % 3] + answer
n //= 3
return answer
- 이렇게 풀 수도 있다.
- 확실히 문제를 이해한 뒤에 코딩을 해나가자.
참고자료 [프로그래머스]https://programmers.co.kr/learn/challenges [참고블로그]http://blog.naver.com/PostView.nhn?blogId=h0609zxc&logNo=221480111945&categoryNo=1&parentCategoryNo=1&viewDate=¤tPage=1&postListTopCurrentPage=1&from=postView