[Programmers][JAVA] 소인수분해

Myung A Lee·2023년 8월 10일
0

CodingTest

목록 보기
10/11
post-thumbnail

[level 0] 소인수분해 문제 링크

문제 설명

소인수분해란 어떤 수를 소수들의 곱으로 표현하는 것입니다. 예를 들어 12를 소인수 분해하면 2 * 2 * 3 으로 나타낼 수 있습니다. 따라서 12의 소인수는 2와 3입니다. 자연수 n이 매개변수로 주어질 때 n의 소인수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.


제한사항
  • 2 ≤ n ≤ 10,000

입출력 예
n result
12 [2, 3]
17 [17]
420 [2, 3, 5, 7]

나의 풀이

배열의 크기가 정해지지 않을때, 자동으로 중복제거가 되었으면 할 때 무엇을 사용하면 좋을지 생각해 보기

import java.util.*;
class Solution {
    public int[] solution(int n) {
        int[] answer;
        HashMap<Integer, Integer> map = new HashMap<>();
        int index = 0;
        
        for(int i = 2; i <= n;){
        	if(n%i==0){
        		map.put(i, i);
        		n/=i; 
        	}
        	else {
        		i++;
        	}
        }
        
        answer = new int[map.size()];
        for(Integer i : map.keySet()){
        	answer[index] = map.get(i);
        	index++;
        }
        Arrays.sort(answer);
        return answer;
    }
}

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

0개의 댓글