약수 구하기

nacSeo (낙서)·2024년 5월 5일
0

프로그래머스

목록 보기
158/169

문제 설명

정수 n이 매개변수로 주어질 때, n의 약수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.

제한사항

1 ≤ n ≤ 10,000

나의 코드

import java.util.*;

class Solution {
    public int[] solution(int n) {
        int sqrt = (int) Math.sqrt(n);
        ArrayList<Integer> list = new ArrayList<>();
        for(int i=1; i<=sqrt; i++) {
            if(n%i == 0) {
                list.add(i);
                if(n/i != i) {
                    list.add(n/i);
                }
            }
        }
        
        int[] answer = new int[list.size()];
        for(int i=0; i<list.size(); i++) {
            answer[i] = list.get(i);
        }
        Arrays.sort(answer);
        return answer;
    }
}

느낀 점

약수 구하는 알고리즘에 대해 구글링을 통해 학습하며 풀어냈다.
먼저 런타임 에러를 대비하여 최적화된 알고리즘을 구하기 위해 sqrt()함수를 사용하여 반복문 범위 제한을 제곱근으로 뒀다. 반복문을 돌며 조건문을 사용하여 약수 중 가장 작은 수부터 큰 수들을 저장시키고, 마지막에 List를 배열로 바꿔주면서 sort()함수를 통해 오름차순으로 정렬해주며 해결!

참고 사이트

profile
백엔드 개발자 김창하입니다 🙇‍♂️

0개의 댓글