프로그래머스/JAVA/소인수분해

Seoung Young Oh·2022년 12월 26일
0

프로그래머스

목록 보기
79/105
post-thumbnail

문제설명

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

제한사항

  • 2 ≤ n ≤ 10,000

입출력 예

nresult
12[2, 3]
17[17]
420[2, 3, 5, 7]

입출력 예 설명

입출력 예 #1

  • 12를 소인수분해하면 2 2 3 입니다. 따라서 [2, 3]을 return합니다.

입출력 예 #2

  • 17은 소수입니다. 따라서 [17]을 return 해야 합니다.

입출력 예 #3

  • 420을 소인수분해하면 2 2 3 5 7 입니다. 따라서 [2, 3, 5, 7]을 return합니다.

풀이

2~n의 정수로 n을 나누어 n의 약수를 구하고, 그 약수가 소수인이 판별한 뒤
ArrayList에 추가한다. 작은 수부터 순환하기 때문에 따로 정렬할 필요는 없다.
n의 범위가 커지면 약수 판별에서 시간 초과가 날 가능성이 높은 코드다.
import java.util.ArrayList;
import java.util.List;

class Solution {
	public List<Integer> solution(int n) {

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

		for (int i = 2; i <= n; i++) {
			if (n % i == 0) {
				int count = 0;
				for (int j = 2; j <= i; j++) {
					if (i % j == 0) {
						count++;
					}
				}
				if(count==1) {
					list.add(i);
				}
			}
		}
		return list;
	}
}

참고

0개의 댓글

관련 채용 정보