코딩테스트/Java

[JAVA] 프로그래머스 약수의 개수와 덧셈

SK_MOUSE 2021. 10. 27. 16:58
반응형

https://programmers.co.kr/learn/courses/30/lessons/77884

 

소요시간 : 7분 13초

class Solution {
    public int solution(int left, int right) {
        int answer = 0;

        for(int i=left; i<=right; i++){
            int result = howMany(i);
            if(result%2 ==0){//짝수이면 더함
                answer+=i;
            }else{
                answer-=i;
            }
        }

        return answer;
    }

    public static int howMany(int val){
        int count=0;
        for(int i=1; i<=val; i++){
            if(val%i == 0){//나누어떨어지면
                ++count;
            }
        }
        return count;
    }
}

 

숏코드 : Math.sqrt()를 이용해서 제곱수인경우 약수의 개수가 홀수인 점. 이용함.

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;
    }
}
반응형