다들 소인수분해 어떻게 하시나요 저는
이렇게 합니다!! 여기서 아이디어를 얻었는데요!
2부터 시작해 나누어 떨어지지 않을 때까지 나누다보면 다음 소인수로 넘어갑니다
for문을 사용해 2부터 n까지 돌려주고, 그 안에서 while문으로 나누어 떨어지는 동안만 반복하게 하는 것입니다! 바로 코드 진행시켜!
import java.util.*;
class Solution {
public int[] solution(int n) {
ArrayList<Integer> list = new ArrayList<>();
for(int i = 2; i<=n; i++){
while(n%i==0){
if(!list.contains(i)) list.add(i);
n/=i;
}
}
int answer[];
return answer = list.stream().mapToInt(i->i).toArray();
}
}
while문은 참인 동안 반복문을 수행합니다!
만약 중복인 값이 없다면 list에 넣어줍니다! 계속 n을 i로 나누어주다 보면 제가 구하는 방식처럼 어느 순간 나누어 떨어지지 않는 순간이 옵니다! 그때 while문을 탈출해주면 i의 값이 계속 증가하면서 for문이 끝납니다!
마지막에는 stream을 사용해 간단하게 ArrayList를 Array로 변환시켰습니다!!
그럼~
정답~!!
그럼 20000
( •̀ ω •́ )✧
'코딩테스트' 카테고리의 다른 글
프로그래머스 - 푸드 파이트 대회 (1) | 2024.03.05 |
---|---|
프로그래머스 - 다음 큰 숫자 (0) | 2023.12.31 |
프로그래머스 - 배열의 길이를 2의 거듭제곱으로 만들기 (1) | 2023.12.21 |
프로그래머스 - 2의 영역 (1) | 2023.12.21 |
프로그래머스 - 가격대 별 상품 개수 구하기 (0) | 2023.12.20 |