문제
약수의 개수와 덧셈 : 문제 링크
문제 분석
- 두 정수 left와 right가 매개변수로 주어진다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성
- 제한 사항
- 1 <= left <= right <= 1,000
- 약수의 개수에 따라 더하고 뺀 수를 저장할 정수형 변수 answer을 0으로 초기화. for loop를 통해 초기화식을 left로, 조건식을 right 이하로 설정하여 순서대로 순환하고, 각 수의 약수의 개수를 저장할 정수형 변수 count를 1로 설정(1은 모든 수의 약수이므로). 또 다른 for loop를 통해 2부터 자기자신의 수 사이의 수를 순환하면서, if문을 사용하여 i를 j로 나눈 나머지가 0이라면 약수임을 뜻하므로 count를 1씩 늘림. 저장된 count가 짝수라면 해당 수를 answer에 더하고, 홀수라면 해당 수를 answer에 빼서 저장. loop 탈출 후, 최종적으로 저장된 answer을 return
풀이
using namespace std;
int solution(int left, int right) {
int answer = 0;
for(int i = left; i <= right; ++i) {
int count = 1;
for(int j = 2; j <= i; ++j) {
if(i % j == 0) count++;
}
if(count % 2 == 0) answer += i;
else answer -= i;
}
return answer;
}