문제 설명
소인수분해란 어떤 수를 소수들의 곱으로 표현하는 것입니다. 예를 들어 12를 소인수 분해하면 2 * 2 * 3 으로 나타낼 수 있습니다. 따라서 12의 소인수는 2와 3입니다. 자연수 n이 매개변수로 주어질 때 n의 소인수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
2 ≤ n ≤ 10,000
function isPrime(n) {
if(n === 1) return false;
for(let i = 2; i < n; i++) {
if(n % i === 0) return false;
}
return true;
}
// 소수인지 확인하는 함수
function solution(n) {
let answer = new Set();
for(let i = 2; i <= n; i++) {
if(isPrime(i) && (n % i === 0)) {
n /= i;
answer.add(i);
}
}
return [...answer];
}
일차적으로 i값이 소수인지 확인해주고, 소수라면 n값으로 나머지 연산을 해보고 그 값이 0이면
그 i 값들이 소인수분해 값인 것이다.
소인수분해와 소수는 조금만 지나도 잘 잊게 되는 것 같다.
분명 수학적 지식은 알고 있는데 ... 어려워..
'자료구조 알고리즘 > 코딩테스트 풀이' 카테고리의 다른 글
프로그래머스 Lv0 최댓값 만들기(2) (0) | 2023.02.19 |
---|---|
프로그래머스 Lv0 직각삼각형 출력하기 (0) | 2023.02.19 |
백준 5597번 과제 안 내신 분? (0) | 2023.02.16 |
백준 4344번 평균은 넘겠지 (0) | 2023.02.12 |
백준 2884 자바스크립트(node js) (0) | 2023.02.02 |