상세 컨텐츠

본문 제목

124 나라의 숫자 (진법 변환의 원리 이해) - Javascript

Programming/Algorithm

by 쌩우 2019. 4. 25. 15:37

본문

문제
124 나라에는 자연수만 존재하고,
124 나라에서는 모든 수를 표현할 때 1, 2, 4만 사용합니다.

10진법 : [1,2,3,4,5,6,7,8,9,10] 1
124 나라 : [1,2,4,11,12,14,21,22,24,41]
자연수 n이 매개변수로 주어질 때, n을 124 나라에서 사용하는 숫자로 바꾼 값을 return 하도록 solution 함수를 완성해 주세요.

풀이
일종의 진법 변환과 같은 원리로 보아야 할 것 같다.
진법 변환 시에는 몇 진수를 이용한 표현법인지를 파악하는 것이 우선이다.
여기서는 1,2,4 숫자 세 개를 사용하므로 진법 표기의 주기는 3이었다.

10진법 자연수 n을 3으로 나누었을때의 나머지에 대해서 각각 0, 1, 2일 때를 고려하면 될 것이다.

function solution (n) {
  var answer = '';  //최종적으로 124 나라법으로 표현될 숫자를 문자열로 return한다.
  var residue = 0;  // 자연수 n을 3으로 나누었을 경우, 나머지를 다루기 위한 함수.
  var period = ['4', '1', '2'];

  while(n > 0) {
    residue = n%3;
    n = parseInt(n/3);   // 이 부분이 함수의 핵심이라고 생각한다. 주기가 3인 표현법의 반복문을 순회할 때의 조건 설정 측면에서.

    if(residue === 0) {
      n = n - 1;  // 이 부분 역시 중요하다. 3으로 나누어 떨어지는 경우는, 124 나라에서 앞자리 수가 바뀌거나 숫자의 길이가 바뀌는 구간이기 때문이다.
    }
    answer = period[residue] + answer;
  }
return answer;
}

관련글 더보기

댓글 영역