function solution(n) {
var answer = '';
let digits = 0;
let temp = n;
while (temp > 0) {
digits++;
temp = Math.floor((temp - 1) / 3);
}
for (let i = digits; i > 0; i--) {
let remainder = (n - 1) % 3;
if (remainder === 0) {
answer = '1' + answer;
} else if (remainder === 1) {
answer = '2' + answer;
} else if (remainder === 2) {
answer = '4' + answer;
}
n = Math.floor((n - 1) / 3);
}
return answer;
}
// 시간초과 코드
function solution(n) {
var answer = '';
let digits = Math.ceil(n / 3);
for (let i = digits; i > 0; i--) {
let remainder = (n - 1) % 3;
if (remainder === 0) {
answer = '1' + answer;
} else if (remainder === 1) {
answer = '2' + answer;
} else if (remainder === 2) {
answer = '4' + answer;
}
n = Math.floor((n - 1) / 3);
}
return answer;
}
내 코드 설명
자릿수를 먼저 구하고 그에 맞춰서 숫자를 하나씩 채워나가려 했는데 시간초과가 떴다. 왜 그런지는 잘 모르겠다.