문제 풀이/프로그래머스

프로그래머스 lv0 소인수 분해

춘핑이 2023. 2. 27. 17:46

문제

소인수분해란 어떤 수를 소수들의 곱으로 표현하는 것입니다.
예를 들어 12를 소인수 분해하면 2 * 2 * 3 으로 나타낼 수 있습니다.
따라서 12의 소인수는 2와 3입니다.
자연수 n이 매개변수로 주어질 때 n의 소인수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.

코드

public int[] solution(int n) {
    List<Integer> list = new ArrayList<>();

    int i = 2;
    while (n > 1) {
        if (n % i == 0) {
            if (!list.contains(i)) {
                list.add(i);
            }
            n = n / i;
        } else {
            i++;
        }
    }

    int[] answer = new int[list.size()];
    for (int j = 0; j < answer.length; j++) {
        answer[j] = list.get(j);
    }

    return answer;
}

풀이

문제 자체는 쉬웠다. i값을 점점 늘려나가면서 n이 나누어떨어지면 n의 소인수인것이다.
문제를 풀때 컬렉션을 사용하였다. 컬렉션을 다시 배열로 만드는게 어려웟는데
그냥 컬렉션의 크기를 가진 배열을 생성하고 값을 넣는 거로 햇다.