코딩테스트/알고리즘

[알고리즘] 프로그래머스 | Lv1 | 약수의 개수와 덧셈

예린_dev 2023. 8. 21. 21:43
class Solution {
    public int solution(int left, int right) {
        int answer = 0;
        
        // left부터 right까지의 모든 수의 개수
        int num = right - left + 1;

        // left ~ right
        for(int i=0; i<num; i++){
            int tmp = left + i; //수
            
            int cnt = 0; //약수의 개수
            for(int j=1; j<=tmp; j++){
                if(tmp % j == 0) cnt++; //약수이면 ++
            }
            
            if(cnt % 2 == 0){ //약수의 개수가 짝수인 수는 더하고
                answer = answer + tmp;
            } else{ //약수의 개수가 홀수인 수는 빼기
                answer = answer - tmp;
            }
        }
        
        return answer;
    }
}

문제를 보고 최대공약수 문제인줄 알고 헤맸다ㅎ

단순하게 주어진 두 수와 두 사이의 수의 약수의 개수를 구하고

해당 수의 약수의 개수가 짝수이면 더하기, 홀수이면 빼기를 하면 되는 쉬운 문제였다.

반응형