문제
코드
function solution(n) {
let ans = '';
const arr = [4, 1, 2];
while(n > 0) {
ans = arr[n%3] + ans;
n = (n%3) ? Math.floor(n/3) : n/3 - 1;
}
return ans
}
또간초과
- n이 5천만이니까 O(n)나왔다 하면 커트!!!
- 그러거나 말거나 아직 코린이인 나는 맘대로 코드를 짰고, 2개인가 맞고 다 시간초과가 났다ㅎㅎ
나 근데 솔직히 억울(?)한 게 공책에다 3진법이랑 124형태로 잘 써놓고 공식을 허투로 찾아내서 시간초과 났어요 ㅡ3ㅡ... 그게 실력이라고요? 어쩔
3진법 활용
- 3으로 나눠지는 수는 마지막 자리가 4고 몫에 -1을 해주면 된다!!
- 3의 배수가 아닌 수들은 % 결과를 그대로 반영해주면 된다!
- 미리 arr에 나머지를 담아두는 게 인상깊었어요
출처