


풀이
재영
const solution = (e, starts) => { const DP = new Array(e + 1).fill(0); const results = new Array(e + 1).fill(1); for (let num = 2; num <= e; num += 1) { for (let divider = num; divider <= e; divider += num) { DP[divider] += 1; } } for (let i = results.length - 1; i >= 0; i -= 1) { if (i === results.length - 1) { results[i] = i; continue; } const prevMaxIdx = results[i + 1]; results[i] = DP[i] >= DP[prevMaxIdx] ? i : prevMaxIdx; } return starts.map((start) => results[start]); };
효성
function solution(e, starts) { const divisorArr = new Array(e + 1).fill(0); for (let i = 1; i <= e; i += 1) { for (let j = i; j <= e; j += i) { divisorArr[j]++; } } const maxCountArr = new Array(e + 1).fill(0); let curDivisor = 0; for (let i = e; i >= 1; i -= 1) { if (curDivisor <= divisorArr[i]) { curDivisor = divisorArr[i]; maxCountArr[i] = i; } else { maxCountArr[i] = maxCountArr[i + 1]; } } return starts.map((v) => maxCountArr[v]); }
은찬
오랜만에 왔습니다ㅎㅎ
오래걸렸네요…
function solution(e, starts) { const answer = []; const arr = Array.from({length: 5000001}, () => 0); const max = Array.from({length: 5000001}, () => 0); let count = 0; let index = e; for(let i = 1; i <= e; i++) { for(let j = i; j <= e; j += i) { arr[j]++; } } for(let i = e; i >= min; i--){ if(i == e){ max[i] = i; count = arr[i]; } else{ if(arr[i] < count){ max[i] = index; } else { max[i] = i; count = arr[i]; index = i; } } } for(let i = 0; i < starts.length; i++) { const start = starts[i]; answer.push(max[start]); } return answer; }