약수의 개수가 짝수인 수끼리 더하고 약수의 개수가 홀수인 애들을 빼주면 된다.
숫자는 left
부터 right
까지 이므로 for문을 left
에서 right
까지 돌려준다.
function solution(left, right) {
var result = 0;
for(let i = left; i<=right; i++ ){
let yaksoo = 0;
for(let j = 1; j<= i; j++){
if(i % j === 0) yaksoo++
}
result = yaksoo % 2 ===0 ? result + i : result -i;
}
return result;
}
바깥쪽 for문은 숫자가 몇부터 몇까지 인지 구하는거고, 안에 for문 하나 더 돌려서 약수의 개수 뽑아준다.
약수는 1부터 약수를 가지는 기준 수와 같을 수 있으므로, 범위는 1보다 크고 기준수보다 작거나 같다고 지정.
약수는 기준수 / 약수 했을 때 나머지가 0인 수를 뽑아내고, 조건에 부합하는 경우 약수의 개수에 하나씩 추가한다.
for문 다 돌리면 약수의 개수가 담긴 yaksoo
변수 / 2 했을 때 0이면 짝수, 아니면 홀수이므로
삼항연산자 걸어줘서 약수의 개수가 짝수인 경우 기준 수를 더해주고, 홀수인 경우 기준 수를 빼주는 연산 가능하도록 하면 성공!