https://programmers.co.kr/learn/courses/30/lessons/12899
이건 솔직히 코딩문제라기보다는 수학문제에 가까운 문제라고 생각된다.
좀 많은 시간이 걸렸지만 그래도 엑셀에 숫자를 적어가면서 규칙을 찾아서 해결했다.
핵심은 10진수 숫자 x 를 3으로 나눈 나머지가 2면 2로 끝나고, 1이면 1로 끝나고, 0 이면 4 로 끝난다.
그 앞의 숫자는 3으로 나눈 몫을 다시 재귀적으로 계산하면 되는데, 나머지가 2,1일 경우는 그냥 넣으면 되고, 나머지가 0일경우 몫-1 을 넣어주어야 한다.
function solution(n) {
var answer = '';
function DFS(n1){
if (n1 === 0) return '';
if (n1 === 1) return 1;
let q = Math.floor(n1/3);
let r = n1%3;
if (r) return DFS(q) + String(r);
else return DFS(q-1) + '4';
}
answer = String(DFS(n));
return answer;
}