문제
답안
function solution(number, limit, power) {
var answer = [];
let arr = [];
// 1부터 number까지 수의 약수의 갯수를 구한다.
for(let i = 1; i <= number; i++){
let count = 0;
for(let j = 1; j <= Math.sqrt(i); j++){ // i = 9, j = 1~3
if(i % j == 0){
count = count + 2;
if(j*j == i){
count = count - 1;
}
}
}
// 약수의 갯수 arr에 push
arr.push(count);
}
//arr[k]가 limit보다 크면, power의 값을, 아니라면 arr[k]값을 answer에 넣는다.
for(let k = 0; k < arr.length; k++){
if(arr[k] > limit){
answer.push(power);
} else {
answer.push(arr[k]);
}
}
//reduce를 이용해 합을 계산
return answer.reduce((a,b)=>a+b);
}
후기
시간복잡도를 잘 생각해서 풀어야한다.
728x90