[프로그래머스, 120852] 소인수분해 (java)
Problem Solving/Programmers

[프로그래머스, 120852] 소인수분해 (java)

728x90

https://school.programmers.co.kr/learn/courses/30/lessons/120852

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

728x90

메모리: 79 MB, 시간: 0.62 ms

사용 알고리즘: 구현

import java.util.*;

class Solution {
    public int[] solution(int n) {
        
        // 소수가 아닌 수 체크
        boolean[] isNotPN = new boolean[n + 1];
        
        // n의 소인수를 임시로 담을 리스트
        List<Integer> list = new ArrayList<>();
        
        int j;
        for(int i = 2; i <= n; i++) {
            if(!isNotPN[i]) { // i가 소수인 경우
                j = i;
                while(j <= n) {
                    isNotPN[j] = true; // 소인수 i의 배수들은 소인수가 아님
                    j += i;
                }
                // i가 n의 소인수인 경우, 리스트에 담아줌
                if(j - i == n) list.add(i);
            }
        }
        
        int[] answer = new int[list.size()];
        for(int i = 0; i < list.size(); i++) answer[i] = list.get(i);
        return answer;
    }
}
728x90