소인수분해

han.user();·2023년 4월 4일
0

프로그래머스

목록 보기
36/87
post-thumbnail

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.Arrays;

class Solution {
    public int[] solution(int n) {
        int[] answer = {};

        List<Integer> list = new ArrayList<>();

        // n을 2로 나눌 수 있는 만큼 나눈다
        while (n % 2 == 0) {
            list.add(2);
            n /= 2;
        }
        // 이제 n은 홀수가 된다
        for (int i = 3; i <= Math.sqrt(n); i += 2) {
            // i가 n의 인수인 경우, i로 나눈다
            while (n % i == 0) {
                list.add(i);
                n /= i;
            }
        }
        // n이 소수인 경우
        if (n > 2) {
            list.add(n);
        }
        Set<Integer> set = new HashSet<>(list);

        answer = new int[set.size()];

        int i = 0;
        for (int k : set) {
            answer[i] = k;
            i++;
        }
        Arrays.sort(answer);
        return answer;
    }
}
profile
I'm still hungry.

0개의 댓글