Algorithm/programmers
programmers 약수의 개수와 덧셈
wow
2022. 3. 13. 20:47
https://programmers.co.kr/learn/courses/30/lessons/77884
코딩테스트 연습 - 약수의 개수와 덧셈
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주
programmers.co.kr
문제 분석
- 입력받은 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;
}
}