두 정수 left와 right가 매개변수로 주어진다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성한다.
제한 조건
1 ≤ left ≤ right ≤ 1,000
🤔약수란? 어떤 수나 식을 나누어 나머지가 없이 떨어지는 수나 식
ex) 4의 약수
4/1 = 4(나머지 : 0)
4/2 = 2(나머지 : 0)
4/3 = 1.3333...(나머지 : 1.xxx)
=> 4의 약수는 1,2 이다.
문제 정리
#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;
}
🧐궁금한 점 있으시면 댓글 남겨주세요!!🧐