두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
left | right | result |
---|---|---|
13 | 17 | 43 |
24 | 27 | 52 |
function solution(left, right) {
// 약수는 본인을 제외하고는 주어진 수의 절반보다 클 수 없음.
const countDivisor = (num) => {
let index = 1;
let divisorNum = [];
while (index <= num/2) {
if (num % index === 0) divisorNum.push(index);
index++;
}
divisorNum = [...divisorNum, num];
return divisorNum.length;
}
let answer = 0;
for (let num=left; num<=right; num++){
countDivisor(num)%2 === 0 ? answer += num: answer -= num;
}
return answer;
}
약수의 개수를 구하는 함수를 만들고 반복문을 돌리면서 left부터 right까지의 약수의 개수가 홀수인지 짝수인지를 비교하였다.