약수 구하기 (함수) - 1부터 자기 자신까지의 수로 나누어 몫이 0이면 count +1을 한다
덧셈, 뺄셈 하기 - 위 함수의 리턴값이 짝수면 덧셈, 홀수면 뺄셈을 한다
class Solution {
public int solution(int left, int right) {
int answer = 0; // 정답
for (int i = left; i <= right; i++){ // 왼쪽 ~ 오른쪽 값
if(countDivisor(i) %2 == 0) { // 짝수면 덧셈
answer+= i;
} else{ // 홀수면 뺄셈
answer -= i;
}
}
return answer;
}
// 약수의 갯수를 구하는 함수
public int countDivisor (int input){
int count = 0; // 약수의 갯수를 세는 변수
for(int i=1; i <= input; i++){
if(input % i == 0) count ++; // 약수가 있을 경우 count ++
}
return count;
}
}
테스트 1 〉 | 통과 (3.52ms, 73.8MB) |
---|---|
테스트 2 〉 | 통과 (0.88ms, 77MB) |
테스트 3 〉 | 통과 (0.80ms, 74.7MB) |
테스트 4 〉 | 통과 (0.58ms, 73.1MB) |
테스트 5 〉 | 통과 (3.04ms, 71.8MB) |
테스트 6 〉 | 통과 (0.71ms, 83.3MB) |
테스트 7 〉 | 통과 (0.30ms, 76.2MB) |
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;
}
}
피연산자가 어떤 수의 제곱일 경우, 약수의 갯수는 항상 홀수이다