본문 바로가기
자료구조 알고리즘/코딩테스트 풀이

프로그래머스 소인수분해

by 쿠리의일상 2023. 3. 6.
문제 설명

소인수분해란 어떤 수를 소수들의 곱으로 표현하는 것입니다. 예를 들어 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 값들이 소인수분해 값인 것이다.

 

소인수분해와 소수는 조금만 지나도 잘 잊게 되는 것 같다.

분명 수학적 지식은 알고 있는데 ... 어려워..