Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags more
Archives
Today
Total
관리 메뉴

luke

[프로그래머스] - 약수의 개수와 덧셈 (자바/Java) 본문

알고리즘문제/프로그래머스(Java)

[프로그래머스] - 약수의 개수와 덧셈 (자바/Java)

luke-king 2024. 3. 25. 15:24

 

 

 

 

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

 

문제.


 

 

 

 

 

 

 

 

풀이.


 

class Solution {
    public int solution(int left, int right) {
        int answer = 0;
        int cnt = 0;
        

        for (int i = left; i <= right; i++) {
            for (int j = 1; j <= i; j++) {
                if (i % j == 0) {
                    cnt++;
                }
                
            }
            if (cnt % 2 == 0) {
                answer += i;
            } else {
                answer -= i;
            }
            cnt = 0;
        }
        return answer;
    }
}

 

오랜만에 프로그래머스 문제!

문제를 보면 left 부터 right 까지의 약수 개수를 구한 뒤 약수 개수가 짝수일 경우 그 수를 더하고 홀수일 경우 빼는 문제이다.

 

바로 코드를 봐보겠다.

 

1. 우선 짝수, 홀수 카운트를 해줘야 하니 cnt 변수를 만들어 줬다.

 

2. 이제 약수를 찾기위해 2중 for문을 통해 left 부터 right 까지의 수를 돌려준다! 나머지가 0일 경우 약수이므로 하나 찾을 때마다 cnt를 하나씩 증가시켰다.

 

3. 다음으로 약수의 개수를 담고 있는 cnt 변수를 if문으로 조건 검사를 하기 위해 짝수일 경우 약수의 수를 더해주고 아닐 경우 그 수는 빼준다.

 

4. 다음 한 루프를 돌았으니 다음 수 약수를 검사하기 위해 cnt 는 0으로 초기화해준다.