알고리즘

프로그래머스 약수의 개수와 덧셈 (.Java)

wqdsdsf 2023. 11. 9. 22:09
문제 설명
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.

제한사항
1 ≤ left ≤ right ≤ 1,000
입출력 예
left	right	result
13	17	43
24	27	52
class Solution {
    public int solution(int left, int right) {
        
        int cnt = 0; //약수 갯수
        int result = 0; // 최종 return값 
        int repetition = left; //처음 시작값
        while(repetition <= right){
        for(int i = 1; i*i  <= repetition ; i++){
            if(repetition % i == 0){
                if(repetition / i == i){
                    cnt++;
                }
                else{
                    cnt +=2;
                }
               
            }
         
        }
        if(cnt % 2 == 0){ //약수의 개수가 짝수이라면~
            result += repetition;
            cnt =0;

        }
        else{ //약수의 개수가 홀수라면~
            result -= repetition;
            cnt = 0;
        }
        repetition++;

    }
        return result;
    
    }
}