Java/Coding Test
약수의 개수와 덧셈 문제풀이
최고다최코딩
2023. 9. 24. 13:52
728x90
주어진 두수 사이의 수 중 약수의 개수가 짝수이면 더하고 홀수이면 빼서 결과값 반환
public int solution(int left, int right) {
int answer = 0;
for (int i = left; i <= right; i++) {
if(primeNum(i)%2==0) {
answer+=i;
}else {
answer-=i;
}
}
return answer;
}
public int primeNum(int num) {
int count=0;
for (int i = 1; i*i <= num; i++) {
if(i*i==num)count++;
else if(num%i==0)count+=2;
}
return count;
}
단순하게 약수의 개수를 구해서 계산했다.
그런데 약수를 구하는 primeNum을 보면
i*i==num
즉 제곱수인 경우는 1만 더하고 아니면 전부 2를 더해서 짝수이다.
즉 제곱수만 빼고 나머지는 다 더하면 된다.
public int solution2(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;
}