[프로그래머스] 124 나라의 숫자 (JS)

hhkim·2023년 10월 13일
0

Algorithm - JavaScript

목록 보기
158/188
post-thumbnail

풀이 과정

  • 3진법
    • 0 = 0, 1 = 1, 2 = 2, 3 = 10
  • 0이 표현되지 않으므로 4로 바꾸고 1을 당겨쓰기
  1. n이 3의 몇 제곱보다 같거나 작은지 구하기 (자릿수)
  2. 1부터 1의 결과까지 증가하면서 반복
  3. 3으로 나눈 나머지가 1이면 1, 2면 2, 0이면 4 순서로 1의 자리부터 계산
    0인 경우 남은 수는 3으로 나눈 몫 - 1
    아닌 경우 그냥 3으로 나눈 몫

코드

function solution(n) {
  let i = 1;
  let sum = 0;
  while (true) {
    const next = 3 ** i;
    if (sum + next >= n) break;
    sum += next;
    ++i;
  }
  let result = '';
  for (let j = 1; j <= i; ++j) {
    let rest = n % 3;
    if (rest === 1) result = '1' + result;
    else if (rest === 2) result = '2' + result;
    else if (rest === 0) result = '4' + result;
    n = Math.floor(n / 3);
    if (rest === 0) --n;
  }
  return result;
}

🤔

풀릴 듯 말 듯 안 풀려서 사람들 힌트를 참고했다.
0이 존재하지 않으므로 3으로 나눠떨어지는 수는 몫을 하나 낮춰서 나머지를 3으로 만들어주어야 한다는 게 포인트였다.
다들 124 나라 망했으면 좋겠다는 말에 공감했다.

0개의 댓글