내 초기 코드인데 각 약수를 구함에 있어 최대 수까지 반복을 돌려버려서 그런듯
function solution(number, limit, power) {
const measureNumber = getMeasureNumber(number)
const answer = measureNumber.reduce((acc,cur) => { return cur <= limit ? acc + cur : acc + power} , 0)
return answer;
}
function getMeasureNumber (number){
const result = []
for(let i = 1; i <= number ; i ++){
const arr = []
for ( let j = 1 ; j <= number ; j ++){
i % j === 0 ? arr.push(j) : null
}
result.push(arr.length)
}
return result
}
고럼 제곱근으로 다시 풀어야지..?
function solution(number, limit, power) {
const measureNumber = getMeasureNumber(number)
const answer = measureNumber.reduce((acc,cur) => { return cur <= limit ? acc + cur : acc + power} , 0)
return answer;
}
function getMeasureNumber (number){
let result = []
for(let i = 1; i <= number ; i ++){
let count = 0
for ( let j = 1 ; j * j <= i ; j ++){
if(i % j === 0){
count++
if(j !== i / j){
count++
}
}
}
result.push(count)
}
return result
}
제곱근까지만 계산을 해서 i = 36이고 j = 6이라는 가정 하에 i/j를 하면 6이 나올텐데 6일 경우 앞에서 한번 count에 ++을 해주었기 때문에 해주면 안됨
즉 i = 36 j = 3이면 i / j 가 12이기에 3과 12가 약수로 들어가야되므로 count++을 두번 해주는거임