https://programmers.co.kr/learn/courses/30/lessons/12899
function solution(n) {
var answer = '';
while (n > 0) {
switch ((n % 3)) {
case 0:
answer = '4' + answer;
n = n/3 -1;
break;
case 1:
answer = '1' + answer;
n = Math.floor(n / 3);
break;
case 2:
answer = '2' + answer;
n = Math.floor(n / 3);
break;
}
}
return answer;
}
let n = 4;
console.log(solution(n));
이 문제는 3진법인데, 3이아니라 4가 들어가는 3진법이다.
toString(3)으로 바꾸고 생각해보려다가 n = 3의 경우 3진법은 10, 이문제의 경우 4로 나와야한다. 그래서 그냥 아예 새로 만들어야했다.
n이 0보다 클 때 나머지가 0,1,2인 경우로 나눠서 생각했다.
각 케이스별로 맞는 글자를 answer에 추가하는 방식으로 답을 도출했다.
Math.floor은 소수점이 생기면 0.3333333~~~ 인경우 n >0이 되서 다시 반복을 돌게된다.
그래서 Math.floor로 소수뒤에자리는 다 버림을 하였다.