솔솔

[알고리즘-프로그래머스] 소인수분해 본문

나의보물들/알고리즘

[알고리즘-프로그래머스] 소인수분해

솔솔하네 2024. 1. 18. 11:53
반응형

소인수분해 ?

https://namu.wiki/w/%EC%86%8C%EC%9D%B8%EC%88%98%EB%B6%84%ED%95%B4/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98

 

소인수분해/알고리즘 - 나무위키

주어진 숫자 n의 소인수를 구한다고 할 경우 아래와 같은 순서로 진행하면 된다. * 1. i=2로 시작하여 i++ 하면서 n%i == 0 인지 체크한다.* 2. n%i==0이 성립하는 경우 i를 소인수로 등록한 후 n은 i로 나

namu.wiki

 

[어떻게 풀것인가?]

1.  i=2로 시작하여 i++ 하면서 n%i == 0 인지 체크한다.

2. n%i==0이 성립하는 경우 i를 소인수로 등록한 후 n은 i로 나눈 값을 저장하고 i는 i++ 하지 않고 i부터 다시 시작하도록 한다.
3. n이 1이 될 때까지 위 과정을 반복한다.

 

    public int[] solution(int n) {
        List<Integer> factorization = new ArrayList<>();
        for (int i = 2; i <= n; i++) {
            while (n % i == 0) {
                n /= i;
                if (!factorization.contains(i)) factorization.add(i);
            }
        }
        System.out.println(Arrays.toString(factorization.stream().mapToInt(Integer::intValue).toArray()));
        return factorization.stream().mapToInt(Integer::intValue).toArray();
    }