내가 푼 방법
function solution(number, limit, power) {
let result = 0;
let divisorsCount = new Array(number + 1).fill(0); // 약수 개수를 저장할 배열
// 각 숫자에 대한 약수 개수 계산
for (let i = 1; i <= number; i++) {
for (let j = i; j <= number; j += i) {
divisorsCount[j]++;
}
}
for (let i = 1; i < divisorsCount.length; i++) {
if (divisorsCount[i] > limit) {
result = result + power
} else {
result = result + divisorsCount[i]
}
}
return result
}
남들이 한 방법
function solution(number, limit, power) {
var answer = 0;
let iron = 1;
for(let i=2; i<=number; i++) {
let checkMax = Math.sqrt(i);
let weapon = 0;
for(let j=1; j<=checkMax; j++) {
if(j * j === i) {
weapon++;
} else if(i % j === 0) {
weapon += 2;
}
}
weapon = weapon <= limit ? weapon : power;
iron += weapon;
}
answer = iron;
return answer;
}
}
처음에는 그냥 이중배열로 했더니 시간 초과.
다른 사람들이 푼 것을 보니 제곱근을 이용해서 시간을 줄임.
하나씩 하나씩 하면서 익히자