프로그래머스 문제
[프로그래머스]약수의 개수와 덧셈
김판다
2022. 2. 26. 20:47
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ left ≤ right ≤ 1,000
입출력 예
leftrightresult
13 | 17 | 43 |
24 | 27 | 52 |
입출력 예 설명
입출력 예 #1
- 다음 표는 13부터 17까지의 수들의 약수를 모두 나타낸 것입니다.
수약수약수의 개수
13 | 1, 13 | 2 |
14 | 1, 2, 7, 14 | 4 |
15 | 1, 3, 5, 15 | 4 |
16 | 1, 2, 4, 8, 16 | 5 |
17 | 1, 17 | 2 |
- 따라서, 13 + 14 + 15 - 16 + 17 = 43을 return 해야 합니다.
입출력 예 #2
- 다음 표는 24부터 27까지의 수들의 약수를 모두 나타낸 것입니다.
수약수약수의 개수
24 | 1, 2, 3, 4, 6, 8, 12, 24 | 8 |
25 | 1, 5, 25 | 3 |
26 | 1, 2, 13, 26 | 4 |
27 | 1, 3, 9, 27 | 4 |
- 따라서, 24 - 25 + 26 + 27 = 52를 return 해야 합니다.
코드
class Solution {
public int solution(int left, int right) {
int answer = 0;
int count = 0;
int num=left;
do{
for(int n =num ; n>=1 ;n--){
if(num%n ==0){
count++;
}
}
if (count %2 ==0){
answer += num;
}else{
answer -=num;
}
//System.out.println("num: "+num);
//System.out.println("count: "+count);
num++;
count =0;
}while(num<=right);
return answer;
}
}
오랜만에 프로그래머스를 다시 풀어보는데 자력으로 술술 풀려서 기분이 좋았다.
약수 갯수를 count로 저장하여 count가 짝수일시 현재 숫자를 더하고
count가 홀수일시 현재 숫자를 빼주며
현재 숫자 num을 증가시키며 right와 같은 숫자가 되면 반복문이 끝내도록 했다.
이렇게 써놓으니 굉장히 쉬운 문제를 풀었구나 싶었다.