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

입출력 예 #1
- 12를 소인수분해하면 2 * 2 * 3 입니다. 따라서 [2, 3]을 return합니다.
입출력 예 #2
- 17은 소수입니다. 따라서 [17]을 return 해야 합니다.
입출력 예 #3
- 420을 소인수분해하면 2 * 2 * 3 * 5 * 7 입니다. 따라서 [2, 3, 5, 7]을 return합니다.
나의 풀이
function solution(n) {
var answer = [];
let num = 2;
// 더이상 나누어 떨어지지 않을 때 가지 나누어야하므로 while문 사용
while(n !== 1) {
// 작은수 부터 나누어야하기 때문에 나머지가 없을경우 나눠짐으로 판단.
if(n % num == 0) {
// 나눠지는 값 answer배열에 추가
answer.push(num);
// 나눈 몫 반영
n = n / num;
} else {
// 나눠지지 않을 시 나눌 값을 1증가
num += 1;
}
// console.log(n, num, answer)
}
// 배열에 중복을 제거하기위해 set사용
return [...new Set(answer)];
}
'programmers > level 0' 카테고리의 다른 글
Programmers - Js - 영어가 싫어요 (0) | 2023.03.18 |
---|---|
Programmers - Js - 컨트롤 제트 (0) | 2023.03.18 |
Programmers - Js - 시저 암호 (0) | 2023.03.14 |
Programmers - Js - 크기가 작은 부분 문자열 (0) | 2023.03.14 |
Programmers - Js - 공 던지기 (0) | 2023.03.06 |