기사 단원의 무기

function solution(number, limit, power) {
let answer = 0;
for (let i = 1; i<=number; i++) {
let temp = 0;
for (let j = 1; j<=i; j++) {
if (i % j === 0) {temp++}
}
temp <= limit ? answer += temp : answer += power
}
return answer;
}
문제가 있다.. 시간이 너무 오래걸리는 테스트가 있어서. 수정이 필요하다.
- 제곱근까지만 탐색
- 제곱근 이상의 약수는 제곱근 이하의 약수에 대응
- 제곱근이 정수인 경우 특별히 처리
예시
function solution(number, limit, power) {
let answer = 0;
for (let i = 1; i<=number; i++) {
let temp = 0;
let sqrt = Math.sqrt(i)
for (let j = 1; j<= sqrt; j++) {
if (i % j === 0) {temp++
if (j!==sqrt) {temp++}}
}
temp <= limit ? answer += temp : answer += power
}
return answer;
}
