문제 풀이/프로그래머스
프로그래머스 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의 소인수인것이다.
문제를 풀때 컬렉션을 사용하였다. 컬렉션을 다시 배열로 만드는게 어려웟는데
그냥 컬렉션의 크기를 가진 배열을 생성하고 값을 넣는 거로 햇다.