https://programmers.co.kr/learn/courses/30/lessons/12899
function solution(n) {
let answer = "";
const nums = [4, 1, 2];
while (n > 0) {
answer = `${nums[n % 3]}${answer}`;
n = n % 3 === 0 ? n / 3 - 1 : Math.floor(n / 3);
}
return answer;
}
3진법을 응용하면 풀 수 있는 문제입니다.
|10진법|3진법|124나라의 숫자|
|---|---|---|
|1|1|1|
|2|2|2|
|3|10|4|
|4|11|11|
|5|12|12|
|6|20|14|
|7|21|21|
|...|...|
10진법 -> 3진법으로 변환할 때와 똑같이 풀되, 규칙을 파악해보면 3진법이 124나라의 숫자표기보다 자리올림이 한 차례 더 빨리 된다는 것을 알 수 있습니다. (3진법은 3에서 자리올림 되지만, 124나라의 표기법은 4 다음에 자리올림 되기 때문)
따라서, 나머지가 0, 1, 2일 때 각각 4, 1, 2를 매핑시키면 되고, 위에서 설명한 이유 때문에 나머지가 0인 경우에는 몫에서 1을 빼주어야 합니다. (124 나라 숫자보다 빨리 올라간 자리올림 수를 빼주는 것)