문제 설명
소인수분해란 어떤 수를 소수들의 곱으로 표현하는 것입니다. 예를 들어 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합니다.
나의 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
function solution(n) {
var answer = [];
let dev =2
while(n>1){
if(n % dev===0){
answer.push(dev)
n/=dev
}else{
dev++
}
}
return [...new Set(answer)];
}
|
cs |
문제를 풀며 느낀 점
- n이 1보다 크다면 while문을 통해서 무한 반복 시켰습니다. dev의 초기값을 2로 설정해두었고 n이 dev로 나눴을 때 나머지가 0이라면 answer.push(dev)를 통해서 몫을 answer 배열에 추가하였고 나눠지지 않는다면 dev를 1씩 증가시켜서 다시 while문을 돌게 하였습니다.
n이 0이 되고 while문을 빠져나오게 되면 new Set(answer)을 통해서 중복 값을 제거하고... spread연산자를 통해서 배열 안에 푼 값을 return 하였습니다.
'코딩 테스트 풀이 🛠' 카테고리의 다른 글
[프로그래머스] 영어가 싫어요 (0) | 2023.02.15 |
---|---|
공 던지기 (0) | 2023.02.15 |
[Leet Code - eazy] 66. Plus One (0) | 2023.02.14 |
[Leet Code - eazy] 1528. Shuffle String (0) | 2023.02.14 |
[Leet Code - eazy] 1389. Create Target Array in the Given Order (0) | 2023.02.14 |