두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int divisorCount(int num){
int count =0; //약수의 개수
for(int i=1;i<=num;i++){ //약수의 개수 구하기
if(num%i==0)
count++;
}
if(count%2==0) //약수의 개수가 짝수인 경우
return 0;
else //약수의 개수가 홀수인 경우
return 1;
}
int solution(int left, int right) {
int answer = 0;
for(int i=left;i<=right;i++){ //약수의 개수에 따른 덧셈과 뺄셈 수행
if(divisorCount(i)==0)
answer += i;
else
answer -= i;
}
return answer;
}
약수의 개수가 짝수이면 0을 리턴하고 홀수이면 1을 리턴하는 divisorCount 함수를 새롭게 작성하였다.
left부터 right까지의 수를 더하거나 빼는 문제이므로 solution에서 반복문을 사용하였다.