문제링크: https://programmers.co.kr/learn/courses/30/lessons/77884
문제 :
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
1) 제공 받는 두 숫자 범위를 기준으로 잡기
2) 해당 범위 내 숫자들의 약수찾기
3) 찾은 약수들의 갯수가 짝수면 숫자를 더하고 홀수면 빼서 결과 리턴하기
function solution(left, right) {
// 결과값을 리턴 받기위한 초기값 설정
let res = 0;
/**
숫자 범위 (ex: left=13, right = 17인경우 13~17)
= for문을 돌리는 범위는 left부터 right까지
**/
for (let index = left; index <= right; index++) {
// 해당 숫자의 약수를 찾으면 배열에 넣기위한 배열설정( ex: [1,2,7,14])
let divisors = [];
for (let temp = 1; temp <= index; temp++) {
/**
숫자를 1부터 나누면서 나머지가 0인 경우가 약수이므로 약수일 경우 count 배열에 넣어 보관
**/
if (index % temp === 0) {
divisors.push(temp);
}
}
const len = divisors.length;
const num = divisors[len - 1];
if (len % 2 === 0) {
// 약수배열이 짝수인 경우 더하기
res += num;
} else {
// 약수배열이 홀수인 경우 빼기
res -= num;
}
}
// 결과값 리턴
return res;
}