🔗 https://programmers.co.kr/learn/courses/30/lessons/77884
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
1 ≤ left ≤ right ≤ 1,000
left부터 right까지 약수가 있으면 tmp 배열에 담고,
tmp의 길이에 따라 count에 해당 값을 더하거나 빼줬다.
function solution(left, right) {
let count = 0;
for(let num = left; num <= right; num++){
const tmp = [];
for(let i = 1; i <= num; i++){
if(num % i == 0){
tmp.push(i)
}
}
if(tmp.length % 2 == 0){
count += num;
} else {
count -= num;
}
}
return count;
}
생각해보니 약수들을 굳이 배열에 담을 필요가 없었다.
그냥 약수가 있으면 count++를 하고,
count가 짝수인지 홀수인지만 삼항 연산자로 판별하여 더하거나 빼줬다.
function solution(left, right) {
let answer = 0;
for(let num = left; num <= right; num++){
let count = 0;
for(let i = 1; i <= num; i++){
if(num % i == 0){ count++ }
};
(count % 2 == 0) ? answer += num : answer -= num;
}
return answer;
}