https://programmers.co.kr/learn/courses/30/lessons/77884
문제 분석
- 입력받은 left와 right사이의 모든 수 중에서 약수의 개수를 구한다.
- 약수가 짝수인 경우 더하고 홀수인 수는 뺀다.
문제 풀이
1. for문을 통해서 left와 right사이의 수를 처리한다.
2. 약수의 개수를 구하는 함수를 통해 짝수인 경우 정답(answer)에 더하고, 홀수인 경우 뺀다.
3. 약수의 개수는 for문을 통해서 1부터 해당 숫자(num)까지 나눠지는 경우 개수를 추가한다.
class Solution {
public int solution(int left, int right) {
int answer = 0;
for(int i=left;i<=right;i++){
if(divisor(i) % 2 ==0){ // 약수의 개수가 짝수인 경우
answer += i;
}else{ // 약수의 개수가 홀수인 경우
answer -= i;
}
}
return answer;
}
static int divisor(int num){
int cnt = 0;
for(int i=1;i<=num;i++){
if(num%i==0){
cnt++;
}
}
return cnt;
}
}
'Algorithm > programmers' 카테고리의 다른 글
programmers 폰켓몬 (0) | 2022.03.13 |
---|---|
programmers 실패율 (0) | 2022.03.13 |
programmers 3진법 뒤집기 (0) | 2022.03.13 |
programmers 예산 (0) | 2022.03.13 |
programmers 2016년 (0) | 2022.02.18 |