프로그래머스 문제풀이/Level 0

약수 구하기 (자바, Java)

뮤츠 2022. 11. 26. 23:56

귀찮아서 에라토스 테네스의 체를 쓰지 않았다. 이러면 연습이 안되는데, 반성해야한다.

Queue를 이용해 풀었다. ArrayList로 풀수도 있지만, 가변적인 경우에 ArrayList로 이용하는걸 별로 안좋아해서.

 

import java.util.LinkedList;
import java.util.Queue;
import java.util.Arrays;

class Solution {
    public int[] solution(int n) {
        int[] answer = {};
        Queue<Integer> queue = new LinkedList<>();
        
        for (int i=1; i<=Math.sqrt(n); i++) {
            if (n%i==0) {
                queue.add(i);
                if (n!=Math.pow(i,2)) {
                    queue.add(n/i);    
                }                
            }
        }
        
        answer = new int[queue.size()];
        
        for (int i=0; i<answer.length; i++) {
            answer[i] = queue.poll();
        }
        
        Arrays.sort(answer);
        
        return answer;
    }
}