본문 바로가기
CodingTest/Programmers

[프로그래머스] Lv0 소인수분해

by yoondoo 2023. 1. 11.
728x90
import java.util.*;
class Solution {
    public int[] solution(int n) {
                
		Set<Integer> hSet = new HashSet<Integer>();
        int num = 2;
        while(n!=1) {
        	if(n%num==0) {
        		n = n/num;
        		hSet.add(num);
        	}else{
                num++;
            }
        }
        int[] answer = new int[hSet.size()];
        Iterator it = hSet.iterator();
        int idx = 0;
        while(it.hasNext()) {
        	answer[idx++] = (int) it.next();
        }
        Arrays.sort(answer);
        return answer;
    }
}

우선 소인수 값들이 중복되면 안되서 Set을 이용해서 중복을 자동으로 제거해줬다.

1은 제외이므로 num은 2부터 시작해서 만약 n이 2로도 나눠지면 num을 증가시키지 않고 다시 num으로 나누기를 반복 만약 num으로 나눠지지 않으면 그때 num을 하나 증가해서 n이 1이 될 때까지 반복했다.

 

set객체를 int배열로 바꿀 때 iterator를 이용했는데 stream을 사용하면 더 간단하게 바꿀 수 있으니깐 stream을 배운 후에는 stream을 사용해보자.

반응형

댓글