프로그래머스

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

소금_msg 2022. 12. 2. 17:13
import java.util.*;

class Solution {
    
    //약수를 입력받아 약수의 개수를 리턴
    public List<Integer> factor(int left, int right){
        int cnt = 0;
        List<Integer> evenOdd = new ArrayList<>();
        for(int i=left; i<= right; i++){
            // 약수 cnt 초기화
            cnt = 0;
            for(int j=1; j<=i; j++){
                if(i%j ==0){
                    cnt++;
                    
                }   
            }
            evenOdd.add(cnt);
        }
        
        return evenOdd;
    }
    
    
    
    public int solution(int left, int right) {
       List<Integer> evenOdd = factor(left, right);
        
        int answer = 0;
        int even = 0;
        int odd = 0;
        int tmp = right-left+1;
        int [] leftRight = new int[tmp];
        
        // left부터 right 까지 수가 들어있는 배열
        for(int i=0; i<leftRight.length;i++){
            leftRight[i] = left;
            left++;
        }
        
        //해당 수의 약수가 짝수인지 홀수인지 체크
        for(int i=0; i<evenOdd.size();i++){
            if(evenOdd.get(i)%2==0){
                even+=leftRight[i];
            }else{
                odd += leftRight[i];
            }
            
        }
    
        answer = even-odd;
        
        return answer;
    }
}