minghxx.blog
  • [프로그래머스 / 자바] 약수구하기
    2023년 10월 27일 23시 40분 57초에 업로드 된 글입니다.
    작성자: 민발자
    728x90

    문제

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

    풀이

    import java.util.ArrayList;
    class Solution {
        public int[] solution(int n) {
            ArrayList<Integer> arr = new ArrayList<>();
            for(int i = 1; i <= n; i++) {
                if(n % i == 0){
                    arr.add(i);
                }
            }
            int[] answer = new int[arr.size()];
            for(int i =0; i < arr.size(); i++){
                answer[i] = arr.get(i);
            }
            return answer;
        }
    }

     

     

    참고할만한 다른 사람 풀이

    class Solution {
        public int[] solution(int n) {
            int[] answer = new int[n];
    
            int cnt = 0;
            for (int i = 1; i <= n; i++) {
                if (n % i == 0) {
                    cnt++; // 약수면 ++
                }
            }
    
            answer = new int[cnt]; // 약수 개수만큼 배열생성
    
            cnt = 0;
            for (int i = 1; i <= n; i++) {
                if (n % i == 0) {
                    answer[cnt] = i; // 약수면 배열에 넣기
                    cnt++;
                }
            }
    
            return answer;
        }
    }

    ArrayList 없이 약수 구하기 속도는 빠른 편

    728x90
    댓글