문제

두 정수 left와 right가 매개변수로 주어진다. 

left부터 right까지의 모든 수들 중에서, 

약수의 개수가 짝수인 수는 더하고

약수의 개수가 홀수인 수는 뺀 수를 

return 하도록 solution 함수를 완성한다.

 

제한 조건

1 ≤ left ≤ right ≤ 1,000

 

 

문제풀이(C언어)

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int solution(int left, int right) {
    int answer = 0;
    int cnt; 					// 수들의 약수의 갯수를 count하는 변수
        for(int i = left; i <= right; i++){     // left와 right 사이 수들을 구하기 위한 반복문
            cnt =0; 			     
            for(int j = 1; j <= i; j++){
               if(i%j == 0) cnt++; 		// i에서 j로 나눈 나머지 값이 0이면 cnt증가
            }    
            if(cnt %2 == 0) answer += i; 	// 약수의 갯수(cnt)가 짝수라면 i값 더하기 
            else answer -= i; 			// 홀수라면 i값 빼기
        }        
    return answer;
}