Programmers - 124 나라의 숫자

Doodream·2021년 3월 17일
0

코딩테스트

목록 보기
1/22
post-thumbnail

💻 124 나라의 숫자


❓ 문제

https://programmers.co.kr/learn/courses/30/lessons/12899?language=javascript

✔️ 코드

function solution(n) {
  let number = n;
  let answer = "";

  // number가 0일때 까지 반복
  while (number > 0) {
    // 맨 뒷 자리 숫자가 4인 경우는 3의 배수인 경우
    if (number % 3 === 0) {
      // 4 숫자를 추가
      answer = "4" + answer;
      // number를 3으로 나누고 1를 뺀다.
      number = number / 3 - 1;
      // 맨 뒷자리 숫자가 1인 경우는 3으로 나눈 나머지가 1인경우
    } else if (number % 3 === 1) {
      answer = "1" + answer;
      // 3으로 나누면 나머지가 생기므로 버린다.
      number = Math.floor(number / 3);
      // 1인 경우가 아니라면 자동으로 2
    } else {
      answer = "2" + answer;
      number = Math.floor(number / 3);
    }
  }
  return answer;
}

❗️풀이과정

진법 문제로서 총 1, 2, 4의 자리수가 있다. 총 3개숫자로만 표현이되므로 3으로 나눠서 나머지가 1인경우 2인경우 0인경우 각각의 규칙성을 찾으면 된다.

  • 나머지가 0인경우 : 끝자리가 4로 끝난다.
  • 나머지가 1인경우 : 끝자리가 1로 끝난다.
  • 그 외 나머지 : 나머지가 2인경우 : 끝자리가 2로 끝난다.

맨처음 나머지가 0인 경우에는 3² + 3¹ + 3⁰ 이런 형태로 모두 3의 배수이기 때문에 3으로 묶으면 3(3¹ + 3⁰ + 1) 이런형태가 되어 나머지가 1이 남게 되므로 -1 을 해준다. 문자열 앞자리가 4로 끝나게 되므로 붙여준다.

나머지가 1인경우에는 3으로 나눴을때 나머지가 남게 되는데 이때는 끝자리가 1로 끝나므로 문자열 앞자리에 1을 붙여준다.

그외는 2인 경우이므로 문자열 앞자리에 2를 붙여준다.

이러한 과정을 number가 0이 될때까지 반복해서 자리수를 모두 알아낸다.

배운점

Math.floor() 함수의 경우 안에 소수점을 버리는 기능을 한다.

profile
일상을 기록하는 삶을 사는 개발자 ✒️ #front_end 💻

0개의 댓글