소인수분해란 어떤 수를 소수들의 곱으로 표현하는 것입니다. 예를 들어 12를 소인수 분해하면 2 * 2 * 3 으로 나타낼 수 있습니다. 따라서 12의 소인수는 2와 3입니다. 자연수 n이 매개변수로 주어질 때 n의 소인수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.
풀이1) 소수를 다 나눌때까지 반복문 while
class Solution {
public int[] solution(int n) {
//answer 길이 구하기
int j = 0;
int temp = n;
for(int i=2; i<=n; i++){
if(temp%i==0){
while(temp%i==0){
temp/=i;
}
j++;
}
}
//answer값에 대입하기
int[] answer = new int[j];
j = 0;
for(int i=2; i<=n; i++){
if(n%i==0){
answer[j]=i;
while(n%i==0){
n/=i;
}
j++;
}
}
return answer;
}
}
풀이2) answer의 값을 나중에 설정하는 풀이 Steam mapping
import java.util.*;
class Solution {
public int[] solution(int n) {
List<Integer> factorList = new ArrayList<>();
for (int i = 2; i <= n; i++) {
if (n % i == 0) {
factorList.add(i);
while (n % i == 0) {
n /= i;
}
}
}
//steam mapping
int[] answer = factorList.stream().mapToInt(i -> i).toArray();
return answer;
}
}
'programmers' 카테고리의 다른 글
[JAVA] 숨어있는 숫자의 덧셈 (1) replaceAll("[]","") (0) | 2024.03.14 |
---|---|
[JAVA] 문자열 정렬하기(1) (0) | 2024.03.14 |
[JAVA] ★ 수열과 구간 쿼리2 Arrays.fill (0) | 2024.03.14 |
[JAVA] 코드처리하기 isEmpty() (0) | 2024.03.13 |
[JAVA] 2차원으로 만들기 다차원배열 (0) | 2024.03.13 |