
이번 문제는 요구 범위 수들의 약수 갯수를 알아야한다. 특정 수의 약수의 갯수를 구하기 위한 메서드를 따로 만들어준 후, solution 메서드에서 요구하는 값을 출력해주는 방식으로 풀었다.
약수로 나눴을 때 나머지값이 없으므로, 아래와 같이 구현했다.
public int counter(int num) {
int count=0;
for (int i = 1; i <= num; i++) {
if (num % i == 0) {
count++;
}
}
return count;
}
for문으로 left 부터 right 까지 위에 만들어준 counter() 메서드를 사용해 약수의 갯수를 구하고, 짝수면 + 홀수면 - 해주었다. 쉽게 풀 수 있는 문제였다.
class Solution {
public int solution(int left, int right) {
int answer = 0;
for (int i = left; i <= right; i++) {
if (counter(i) % 2 == 0) {
answer += i;
} else {
answer -= i;
}
}
return answer;
}
public int counter(int num) {
int count=0;
for (int i = 1; i <= num; i++) {
if (num % i == 0) {
count++;
}
}
return count;
}
}