https://programmers.co.kr/learn/courses/30/lessons/77884
function solution(left, right) {
let answer = 0;
for (let i = left; i <= right; i++) {
// 약수의 개수를 구한다.
let num = 1;
for (let j = 1; j <= i / 2; j++) {
if (i % j === 0) num += 1
}
// 약수의 개수가 짝이면 더하고 홀이면 뺀다
num % 2 ? answer -= i : answer += i
}
return answer;
}
제곱근이 정수인 경우 약수의 개수가 홀수 라는 것을 이용
ex)
4의 제곱근은 2 이고 따라서 약수의 개수는 홀수(1,2,4)
5의 제곱근은 2.236... 따라서 약수의 개수는 짝수(1,5)
Number.isInteger() : 정수인가 아닌가를 판단하는 메서드
Math.sqrt() : 제곱근을 구하는 메서드
function solution(left, right) {
let answer = 0;
for (let i = left; i <= right; i++) {
Number.isInteger(Math.sqrt(i)) ? answer -= i : answer += i
}
return answer;
}
이중 for 문을 사용하지 않아서 시간 복잡도가 획기적으로 줄음