지문 처럼 e
가 8
이면
억억단에서 5,000,000 * 5,000,000 이지만
e
값을 넘어가는 경우는 곱하여 e
이하의 값을 만들 수 없기 때문에 버린다.
아래는 찾는 범위를 나타낸다.
위 테이블을 구하는 방법은 아래와 같다.
for (let i = 1; i <= e; i++) {
for (let j = i; j <= e; j += i) {
arr[j]++;
}
}
function solution(e, starts) {
const arr = new Array(e + 1).fill(0);
for (let i = 1; i <= e; i++) {
for (let j = i; j <= e; j += i) {
arr[j]++;
}
}
const arr2 = new Array(e + 1).fill(0);
let temp = 0;
for (let i = e; i >= 1; i--) {
if (temp <= arr[i]) {
temp = arr[i];
arr2[i] = i;
} else {
arr2[i] = arr2[i + 1];
}
}
return starts.map((v) => arr2[v]);
}