* 내 풀이
class Solution {
public int solution(int left, int right) {
int sum = 0;
for(int i=left; i<=right; i++) {
int count = getMeasure(i);
sum = (count % 2 == 0) ? sum + i : sum - i;
}
return sum;
}
public int getMeasure(int num) {
int cnt = 0;
for(int i=1; i<=num; i++) {
if (num % i == 0) cnt++;
}
return cnt;
}
}
* 다른사람 풀이
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() : 제곱근(square root) 구하는 함수 (double형 반환)
Math.sqrt(i) : i의 제곱근
i가 i의 제곱근으로 나누어 떨어지면 => i의 제곱근이 i의 약수이면 -> 약수의 개수가 홀수
'코딩테스트 > Programmers' 카테고리의 다른 글
[Programmers] 3진법 뒤집기 (0) | 2023.08.25 |
---|---|
[Programmers] 같은 숫자는 싫어 - 여러 방법 (0) | 2023.08.25 |
[Programmers] 제일 작은 수 제거하기 (0) | 2023.08.10 |
[Programmers] 서울에서 김서방 찾기 (속도 줄이기) (0) | 2023.08.03 |
[Programmers] 두 정수 사이의 합 (0) | 2023.08.02 |