

처음에는 x배열을 반복문 밖에서 초기화했었다.
function solution(left, right) { let answer = 0; let x = []; for(let i = left; i <= right; i++) { for(let j = 1; j <= i; j++) { if(i%j === 0) x.push(j) } answer += x.length%2 === 0? i : -i; } return answer; }
첫 번째 숫자부터 마지막 숫자까지의 약수가 x 배열에 모두 추가돼 약수의 개수를 알기 어려웠다.
이를 해결하기 위해 x배열 초기화를 첫번째 for문 안쪽으로 옮겼다.
각 숫자마다 x배열이 초기화되고 그 숫자의 약수가 x배열에 추가되는 코드로 수정했다.
function solution(left, right) { let answer = 0; for(let i = left; i <= right; i++) { let x = []; for(let j = 1; j <= i; j++) { if(i%j === 0) x.push(j) } answer += x.length%2 === 0? i : -i; } return answer; }
다른 사람 풀이
(제곱근이 정수면 약수의 개수가 홀수다)
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; }