Notice
Recent Posts
Recent Comments
Link
«   2026/02   »
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
Tags more
Archives
Today
Total
관리 메뉴

luke

[프로그래머스] - 약수 구하기 (Java/자바) 본문

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

[프로그래머스] - 약수 구하기 (Java/자바)

luke-king 2025. 10. 15. 19:30

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/120897

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

 

 

 

 

 

 

 

 

문제.


 

 

 

 

 

 

 

 

풀이.


class Solution {
    public int[] solution(int n) {
        int cnt = 0;
        
        for(int i = 1; i <= n; i++){
            if(n % i == 0){
                cnt++;
            }
        }
        
        int[] answer = new int[cnt];
        cnt = 0;
        
        for(int i = 1; i <= n; i++){
            if(n % i == 0){
                answer[cnt] = i;
                cnt++;
            }
        }
        return answer;
    }
}

이번 문제는 프로그래머스 "약수 구하기" 문제다.

크게 어려운 문제는 아니라 생각해서 바로 풀이해보겠다.

 

1. int형 cnt변수를 만들어 준다. cnt는 우리가 배열 크기를 모르는 걸 만들어 줄 거다.

 

2. 첫 번째 for문에서 약수를 구해주기 위해 1 ~ n만큼 반복해준다. 약수는 나누어 떨어질 때 나머지가 0인 값들이니 조건식도 추가해 주며 cnt변수를 1씩 증가시켜준다.

 

3. 첫 번째 for문을 통해 cnt 변수는 n의 약수의 개수만큼 카운트했기에 배열 사이즈를 cnt로 해준다.

 

4. 배열 사이즈를 지정해줬으면 cnt는 0으로 초기화시켜준다. 그 이유는 이제 약수를 찾아서 인덱스 0번부터 차례대로 넣어줄 거 기 때문이다.

 

5. 첫 번째 for문과 똑같이 약수 구한 코드를 써준다. 다만 if문에서는 answer배열에 값을 넣어준다. cnt를 초기화해줬으니 0번 인덱스부터 시작하며 약수 하나가 들어오면 다음에 cnt를 다시 1씩 증가시켜주면 끝이다.