programmers(37)level_2(124나라의숫자)

문제: 37. 124 나라의 숫자

  • 124 나라가 있다. 10진법이 아닌 자신들만의 규칙으로 수를 표현한다.
  1. 124 나라에는 자연수만 존재한다.
  2. 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=&currentPage=1&postListTopCurrentPage=1&from=postView

0%