- 문제
- 2,3,5의 배수로만 이루어진 배열의 N번째 수를 리턴
- 배열의 1번째 수는 1이다
- 시도
- 피보나치의 메모이제이션을 참고해서 풀어보려고 시도하였음
- 수도코드
메모이제이션을 쓰려고 했는데, 이 방법은 아닌 것 같음
굳이 계산하는데 메모리까지 쓸 필요가 없는 듯, O(N)이 효율적일 듯
const uglyNumbers = function (n) {
let nums = [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16];
function cal(n) {
if (nums[n] === undefined) {
}
}
return num[n]
};
1을 시작수로
2,3,5의 배수를 차례대로 리턴
- 레퍼런스
const uglyNumbers = function (n) {
let nums = [1];
let sec = 0, trd = 0, fif = 0;
for (let i = 1; i < n; i++) {
const two = nums[sec] * 2;
const thr = nums[trd] * 3;
const fiv = nums[fif] * 5;
let minVal = Math.min(two, thr, fiv);
nums.push(minVal);
if (minVal === two) sec++;
if (minVal === thr) trd++;
if (minVal === fiv) fif++;
}
return nums[n - 1];
}