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;
}
'Java > Coding Test' 카테고리의 다른 글
문자열 내 마음대로 정렬하기 문제풀이 (0) | 2023.09.25 |
---|---|
성격 유형 검사하기 문제풀이 (0) | 2023.09.25 |
달리기 경주 문제풀이 (0) | 2023.09.24 |
공원 산책 문제풀이 (0) | 2023.09.24 |
신고 결과 받기 문제풀이 (0) | 2023.09.23 |