두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
class Solution {
public int solution(int left, int right) {
int answer = 0;
for(int i=left;i<=right;i++) {
int num = 0;
for(int j=1;j<=i;j++) {
if(i%j==0) {++num;}
}
answer += num%2==0 ? i : -i;
}
return answer;
}
}
i = left~right 사이의 수 / j = 1~i
j가 i의 약수인 경우 ++num
num(약수의 개수)가 짝수이면 answer에 +i, 홀수이면 -i
class Solution {
public int solution(int left, int right) {
int answer = 0;
for (int i=left;i<=right;i++) {
//제곱수인 경우 약수의 개수가 홀수
if (i % Math.sqrt(i) == 0) {
answer -= i;
}
//제곱수가 아닌 경우 약수의 개수가 짝수
else {
answer += i;
}
}
return answer;
}
}
제곱근을 구하는 Math.sqrt() 함수를 이용해 풀이함
https://school.programmers.co.kr/learn/courses/30/lessons/77884?language=java