KSI일기장
프로그래머스 소인수분해(자바) Arrays.copyOf() & stream().distinct() 본문
import java.util.Arrays;
class Solution {
public int[] solution(int n) {
int[] answer = {};
int cnt = 0;
for (int i = 2; i <= n; i++){
while (n % i == 0){ //n을 i로 나눴을 때 나머지가 0인 경우(나머지 없이 나눠지는 경우)
n /= i; // == n = n / i; -> n을 i로 나눠 n에 대입 ex) n = 10 -> 5 = 10/2, 1 = 5/5
cnt++; //while 조건에 맞아 n /= i; 를 실행할 때 마다 cnt +1 증가
answer = Arrays.copyOf(answer, cnt); //배열 answer에 현재 answer를 길이가 cnt로 확장
//->answer초기길이가 0이므로 i를 answer에 저장하기 위해서 cnt만큼 길이를 늘려야하기 때문에 수행
answer[cnt - 1] = i; //answer 인덱스(cnt(배열길이) - 1)에 n을 나눈 i값을 추가
}
}
answer = Arrays.stream(answer).distinct().toArray(); //stream.distinct를 이용한 배열 answer의 충복값 제거
// toArray()를 하지 않으면 결과가 stream형태여서 배열인 answer에 담을 수 없다.
return answer;
}
}
Arrays.copyOf(복사할 배열 변수명, 배열의길이(int) );
'JavaAlgorithm' 카테고리의 다른 글
프로그래머스 두 수의 나눗셈(자바) (0) | 2024.01.25 |
---|---|
프로그래머스 한 번만 등장한 문자(자바) (0) | 2024.01.25 |
프로그래머스 진료순서 정하기(자바) (0) | 2024.01.24 |
프로그래머스 가까운 수 (자바) (0) | 2024.01.19 |
프로그래머스 팩토리얼 (자바) (for문) (0) | 2024.01.19 |