두 정수 left와 right가 매개변수로 주어지는데
left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 함수를 완성.
function solution(left, right) {
let result = 0;
// left부터 right 까지 숫자를 탐색
for (let i = left; i <= right; i++) {
// 짝홀 카운팅할 변수 선언
let count = 0;
// 약수 체크(나누어 떨어지는 수)
for (let k = 1; k <= i; k++) {
// 약수가 구힐 때마다 카운팅
if (i % k === 0) {
count++;
}
}
// 반복후 약수 개수(count) 체크
// console.log("count: ", count)
// 짝홀 여부에 따라 결과값에 해당수를 연산 처리
count % 2 === 0 ? (result += i) : (result -= i);
}
return result;
}
function solution(left, right) {
var answer = 0;
for (let i = left; i <= right; i++) {
if (Number.isInteger(Math.sqrt(i))) {
answer -= i;
} else {
answer += i;
}
}
return answer;
}
// 13 1 13
// 14 1 2 7 14
// 15 1 3 5 15
// 16 1 2 4 8 16 홀 (같은 수를 곱한 약수가 존재)
// 17 1 17
// 24 1 2 3 4 6 8 12 24
// 25 1 5 25 홀 (같은 수를 곱한 약수가 존재)
// 26 1 2 13 26
// 27 1 3 9 27
// 결론
// 약수의 개수가 홀수인 경우는 같은 수를 곱해서 나오는 경우만 해당됨
MDN - Number.isInteger()
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger
MDN - Math.sqrt()
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math/sqrt