알고리즘 이론 & 풀이/프로그래머스

프로그래머스 Lv.0 | 소인수분해

페블_ 2023. 7. 19. 02:16

https://school.programmers.co.kr/learn/courses/30/lessons/120852

 

 

💻 코드

  1. 12는 2, 2, 3으로 소인수분해 된다는 것을 생각해보자. while문을 통해 i=2부터 시작해 수를 i로 나눠보는 것을 반복한다.
  2. 더 이상 나누어 떨어지지 않으면 2로 인수분해할 것이 떨어졌다는 뜻이므로 i++ 해서 다음 수로 계속 나누는 식으로 반복한다.
  3. 중간에 if문으로 이미 소인수로 배열에 등록된 수가 들어가지 않도록 검사해준다. (혹은 그냥 if문 없이 계속 answer.push(i)를 하고, 마지막 결과 반환 부분에서 return [...new Set(answer)]를 해도 된다.
function solution(n) {
    const answer = [];
    let i = 2;
    while(n > 1) {
        if(n % i === 0) {
            if(!answer.includes(i)) answer.push(i);
            n /= i;
        } else {
            i++;
        }
    }
    return answer;
}