코딩테스트 43일차
약수의 개수와 덧셈
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
function solution(left, right) {
let answer = 0;
for (let num = left; num <= right; num++) {
let divisors = 0; // 약수의 개수를 저장할 변수
for (let i = 1; i <= num; i++) {
if (num % i === 0) {
divisors++; // 약수를 찾으면 개수를 증가시킵니다.
}
}
if (divisors % 2 === 0) {
answer += num; // 약수의 개수가 짝수인 경우 더합니다.
} else {
answer -= num; // 약수의 개수가 홀수인 경우 뺍니다.
}
}
return answer;
}
✏️풀이
let answer = 0;: answer 변수에 최종 결과를 저장합니다.
for (let num = left; num <= right; num++) {: left부터 right까지의 수에 대해 반복합니다. 반복문 변수 num은 현재 검사하고 있는 수를 나타냅니다.
let divisors = 0;: divisors 변수에는 num의 약수 개수를 저장합니다.
for (let i = 1; i <= num; i++) {: 1부터 num까지의 수에 대해 반복합니다. 반복문 변수 i는 현재 약수 후보를 나타냅니다.
if (num % i === 0) { divisors++; }: num을 i로 나누었을 때 나머지가 0이면, i는 num의 약수입니다. 따라서 divisors 변수를 증가시킵니다.
if (divisors % 2 === 0) { answer += num; } else { answer -= num; }: divisors의 값이 짝수이면 num은 약수의 개수가 짝수입니다. 따라서 answer에 num을 더합니다. 그렇지 않은 경우에는 num은 약수의 개수가 홀수이므로, answer에서 num을 뺍니다.
반복문이 종료된 후, answer 값을 반환합니다.
728x90
반응형