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;
}
'알고리즘 이론 & 풀이 > 프로그래머스' 카테고리의 다른 글
프로그래머스 Lv.1 | 폰켓몬 js (0) | 2023.08.08 |
---|---|
프로그래머스 Lv.0 | 영어가 싫어요 js (0) | 2023.08.06 |
프로그래머스 Lv.0 | 이진수 더하기 (0) | 2023.07.09 |
프로그래머스 Lv.0 | 문자열 계산하기 (0) | 2023.07.08 |
프로그래머스 Lv.0 | 공던지기 (0) | 2023.07.08 |