알고리즘

[알고리즘] 약수 구하기 | 프로그래머스 약수의 개수와 덧셈

kimslab01 2024. 9. 27. 10:51

 

 

 

문제

 

 

 

 

 


 

 

 

 

코드

 

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

 

 

 


 

 

 

설명

 

 

1. 변수 선언

  • 정답을 위한 변수 선언을 위해 int 타입의 answer 정의 후 0으로 초기화
  • 약수의 개수를 담기 위한 변수 선언을 위해 int 타입의 count 정의 후 0으로 초기화

2. for문을 통해 시작을 left, 마지막을 right로 설정

 

3. 약수 구하기 알고리즘

// ex) i가 10일때
10 % 1 == 0
10 % 2 == 0
10 % 3 == 1
10 % 4 == 2
10 % 5 == 0
10 % 6 == 4
10 % 7 == 3
10 % 8 == 2
10 % 9 == 1
10 % 10 == 0

// % j 했을 때 0이 되는 값의 개수 = 4개
// 즉, 약수는 4개
  • 위와 같이  left부터 right의 수를 구하기 위해서 for문을 통해 j가 1일때부터 i일때까지 나누었을 때 0이 되는 값을 count로 카운트

4. 이중 for문을 빠져나와 count가 짝수일 때 조건에 맞게 answer에 i를 더하고 홀수일 때에는 빼줌

 

5. 다음 약수를 카운트를 위해 다시 0으로 초기화

 

6. answer를 return해줌