알고리즘 이론 & 풀이/프로그래머스
프로그래머스 Lv.0 | 소인수분해
페블_
2023. 7. 19. 02:16
https://school.programmers.co.kr/learn/courses/30/lessons/120852
💻 코드
- 12는 2, 2, 3으로 소인수분해 된다는 것을 생각해보자. while문을 통해 i=2부터 시작해 수를 i로 나눠보는 것을 반복한다.
- 더 이상 나누어 떨어지지 않으면 2로 인수분해할 것이 떨어졌다는 뜻이므로 i++ 해서 다음 수로 계속 나누는 식으로 반복한다.
- 중간에 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;
}