📕 문제 설명
소인수분해란 어떤 수를 소수들의 곱으로 표현하는 것입니다. 예를 들어 12를 소인수 분해하면 2 * 2 * 3 으로 나타낼 수 있습니다. 따라서 12의 소인수는 2와 3입니다. 자연수 n이 매개변수로 주어질 때 n의 소인수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.
⭐ 제한사항
- 2 ≤ n ≤ 10,000
💻 입출력 예
n | result |
12 | [2, 3] |
17 | [17] |
420 | [2, 3, 5, 7] |
📚 입출력 예 설명
입출력 예 #1
- 12를 소인수분해하면 2 * 2 * 3 입니다. 따라서 [2, 3]을 return합니다.
입출력 예 #2
- 17은 소수입니다. 따라서 [17]을 return 해야 합니다.
입출력 예 #3
- 420을 소인수분해하면 2 * 2 * 3 * 5 * 7 입니다. 따라서 [2, 3, 5, 7]을 return합니다.
😊 나의 답변
function solution(n) {
let answer = new Set();
for(let i = 2; i <= n; i++) {
while(n % i === 0) {
answer.add(i);
n /= i;
}
}
return [...answer];
}
📌 소인수분해 알고리즘
1️⃣ i=2로 시작하여 i++ 하면서 n%i == 0 인지 체크한다.
2️⃣ n%i==0이 성립하는 경우 i를 소인수로 등록한 후 n은 i로 나눈 값을 저장하고 i는 i++ 하지 않고 i부터 다시 시작하도록 한다.
3️⃣ n이 1이 될 때까지 위 과정을 반복한다.
학교를 졸업하고 수학이랑 완전 거리두기 하고 지내다가 풀어보니 새로웠고... 🤦♀️
중복값이 들어가므로 Set()
을 이용하여 풀이하였다.
728x90
반응형
'프로그래머스 > Lv. 0 코딩테스트 입문' 카테고리의 다른 글
[프로그래머스] Lv.0 양꼬치 / JS (0) | 2023.08.28 |
---|---|
[프로그래머스] Lv.0 짝수의 합 / JS (0) | 2023.08.28 |
[프로그래머스] Lv.0 캐릭터의 좌표 / JS (0) | 2023.08.25 |
[프로그래머스] Lv.0 안전지대 / JS (0) | 2023.08.25 |
[프로그래머스] Lv.0 배열 자르기 / JS (0) | 2023.08.24 |