프로그래머스
[프로그래머스] 약수의 개수와 덧셈
소금_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;
}
}