알고리즘 124의 나라

.·2021년 7월 8일

문제 설명

124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다.

124 나라에는 자연수만 존재합니다.
124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다.
예를 들어서 124 나라에서 사용하는 숫자는 다음과 같이 변환됩니다.

왼쪽 : 십진법, 오른쪽 : 124나라
1 1 6 14
2 2 7 21
3 4 8 22
4 11 9 24
5 12 10 41

자연수 n이 매개변수로 주어질 때, n을 124 나라에서 사용하는 숫자로 바꾼 값을 return 하도록 solution 함수를 완성해 주세요.

function solution(n) {
  let answer = ""
  const three = [4, 1, 2];

  while (n > 0) {
       answer = three[n % 3] + answer;//뒤집지 않아도 유지
      // console.log(typeof three[n%3])
      // console.log(typeof answer)
    if (n % 3 === 0) n = n / 3 - 1;
    else n = Math.floor(n / 3);
  
  }

  return answer;
}

문제풀이

  1. 3진법과 유사하지만 나머지가 0일 때 예외 처리를 해줘야 한다 !
  2. 3으로 계속 나눠가는 이유는 나머지가 0,1,2 3개이고 3개단위 마다 변화가 일어나기 때문이다.
  3. 적으면서 규칙을 따라가다보면 나머지가 0일 때는 앞의 두 숫자의 몫이 같아야 하기 때문에 몫을 -1 해줘야 한다는 것을 알 수 있다
  4. 나머지를 index번호로 활용 할 것이기때문에 three=[4,1,2] 로 설정해 준다
  5. answer에 빈문자열을 설정해주고 나머지 + answer 를 몫이 0일 때 까설정해준다. (유사 3진법을 표현하려면 첫번째 나머지가 제일 뒤, 마지막 나머지가 제일 앞에와야 하기 때문에)
  6. answer에 빈문자열 설정해 주는 이유는 string + number를 하면 숫자가 string으로 인식되어 문자열을 더해주듯이 계산해주기 때문이다.
profile
Divde & Conquer

0개의 댓글