[ Programmers ] 약수 개수와 덧셈 (Java)

ma.caron_g·2021년 12월 3일
0

Lv.1 - Programmers (완성)

목록 보기
59/74
post-thumbnail

1. Problem 📃

[ 약수의 개수와 덧셈 ]

https://programmers.co.kr/learn/courses/30/lessons/77884



2. Constraint 🔗



3. Solution 🔑

  1. 약수의 개수를 더해주는 메서드를 만든다.
  2. count로 약수의 개수를 세어주는 변수를 선언 한 후 for문을 통해 받은 매개변수 n을 1부터 n까지 돌리면서 나누었을 때 나머지가 0인 수는 count를 증가(++)시켜 갯수를 세어 개수를 리턴.
  3. 메인 함수에서 입력 받은 left부터 right까지 for문을 돌려 함수를 호출하고 약수의 개수를 반환 받아서 개수가 짝수개라면, answer 변수에 n을 더해주고 홀수개라면 answer에서 n을 빼주고 최종 answer을 리턴.

4. Code 💻

class Solution {
	public int CountOfAliquot(int n) {
		int count=0;
		for(int i=1; i<=n; i++) {
			if(n % i == 0) {
				count++;
			}
		}
		return count;
	}
    public int solution(int left, int right) {
        int answer = 0;
        
        for(int i=left; i<=right; i++) {
        	int num = CountOfAliquot(i);
        	if(num % 2 == 0) {
        		answer += i;
        	}
        	else {
        		answer -= i;
        	}
        }
        
        
        return answer;
    }
}

5. Growth 🍄

< 다른 사람의 풀이 참고 >
수가 제곱 수인 경우 약수는 홀수개, 제곱 수가 아닌 경우 약수는 짝수
n = 16인 경우, 4*4 (4의 제곱) 이 나와 수가 겹쳐서 약수가 하나 줄어들기 때문에 제곱 수 인 경우 약수의 개수는 홀수개가 나온다. 약수의 개수가 홀수인 수의 경우 n % Math.sqrt(n) == 0 이면 n의 약수의 개수가 나옴.
profile
다른 사람이 만든 것을 소비하는 활동보다, 내가 생산적인 활동을 하는 시간이 더 많도록 생활화 하자.

0개의 댓글