✏️ 문제 설명
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
✏️ code
🖥️ 아쉬운 점: sqrt를 생각하지 못한 것
제곱수인 경우, 약수 개수가 홀수입니다.
if (i % Math.sqrt(i) == 0) {answer -= i;}
else {answer += i;}
class Solution {
public int solution(int left, int right) {
int result = 0;
for (int i = left; i <= right; i++) {
result += countDivisor(i);
}
return result;
}
private int countDivisor(int n) {
int count = 0;
if (n == 1) {
return -1;
} else {
for (int i = 2; i <= n/2; i++) {
if (n % i == 0) {
count++;
}
}
return (count % 2 == 0) ? n : -n;
}
}
}
반응형