문제
소인수분해란 어떤 수를 소수들의 곱으로 표현하는 것입니다.
예를 들어 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의 소인수인것이다.
문제를 풀때 컬렉션을 사용하였다. 컬렉션을 다시 배열로 만드는게 어려웟는데
그냥 컬렉션의 크기를 가진 배열을 생성하고 값을 넣는 거로 햇다.
'문제 풀이 > 프로그래머스' 카테고리의 다른 글
| 프로그래머스 lv0 이진수더하기 (0) | 2023.02.27 |
|---|---|
| 프로그래머스 lv0 가까운 수 (0) | 2023.02.27 |
| 프로그래머스 lv1 부족한금액계산하기 (0) | 2023.02.27 |
| 프로그래머스 lv0 숨어있는숫자의덧셈2 (0) | 2023.02.27 |
| 프로그래머스 lv0 진료순서정하기 (0) | 2023.02.24 |