코린이의 소소한 공부노트

[프로그래머스/Lv.0] 소인수분해 본문

코딩테스트 풀이/JAVA

[프로그래머스/Lv.0] 소인수분해

무지맘 2022. 10. 27. 10:35

1. Input

1) 자연수 n

 

2. Output

1) n의 소인수를 오름차순으로 담은 배열

 

3. Constraint

1) 2 <= n <= 10000

 

4. Example

Input: n=12 -> Output: {2,3}

설명: 12=2*2*3이므로 소인수는 23

 

5. Code

1) 첫 코드(2022/10/27)

import java.util.ArrayList;
// main()
ArrayList<Integer> list = new ArrayList<Integer>();
// 1을 제외한 약수 찾기
for(int i=2 ; i<=n ; i++)
    if(n%i==0)
        list.add(i);
// 약수들 중 합성수 걸러내기
for(int i=list.size()-1 ; i>=0 ; i--){
    int count=0;
    for(int j=1 ; j<=list.get(i) ; j++){
        if(list.get(i)%j==0)
            count++;
        if(count>=3){
            list.remove(i);
            break;
        }
    }
}
// 소인수 담기
int[] answer = new int[list.size()];
for(int i=0 ; i<answer.length ; i++)
    answer[i] = list.get(i);
return answer;