정수 N의 약수의 개수를 구할 때 1부터 N까지 반복문을 통해서 약수를 구하는 게 아닌,

Math.sqrt(N) 함수를 사용하여 간단한 시간복잡도로 약수의 개수를 구할 수 있다.

 

 

 

정답 코드

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;
    }
}

 

*** 결과 ***

정수 N % N의 제곱근 == 0일 경우 N의 약수는 홀수개 이며, 

정수 N % N의 제곱근 != 0일 경우 N의 약수는 짝수개 이다.

'알고리즘' 카테고리의 다른 글

JAVA - 1부터 n사이에 소수의 개수 구하기  (0) 2023.12.18

+ Recent posts