https://school.programmers.co.kr/learn/courses/30/lessons/120852
[ 문제 설명 ]
소인수분해란 어떤 수를 소수들의 곱으로 표현하는 것입니다. 예를 들어 12를 소인수 분해하면 2 * 2 * 3 으로 나타낼 수 있습니다. 따라서 12의 소인수는 2와 3입니다. 자연수 n이 매개변수로 주어질 때 n의 소인수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.
[ 문제 풀이 ]
첫번째 풀이
function solution(n) {
let division = 2;
let divisionArr = [];
while (n > 1 && division <= Math.sqrt(n)) {
if (n % division === 0) {
divisionArr.push(division);
n = n / division;
} else {
division++;
}
}
// n이 소수인 경우 처리
if (n > 1) {
divisionArr.push(n);
}
return [...new Set(divisionArr)];
}
1. division 변수는 초기에 2로 설정되고, divisionArr 배열은 나중에 소인수들을 담을 배열
2. while (n > 1 && division <= Math.sqrt(n)):
n이 제곱근보다 작거나 같을 때까지 반복하는 이유는, 소인수를 구하는 과정에서 중복을 피하기 위함
3. n이 division으로 나누어 떨어진다면, division을 divisionArr 배열에 추가하고, n을 division으로 나눕니다.
4. 그렇지 않으면, division을 1 증가
5. n이 1보다 크다면, n은 소수이므로 divisionArr 배열에 추가합니다.
6. divisionArr 배열에서 중복된 값을 제거하기 위해 Set 객체를 사용하고, Set 객체를 다시 배열로 변환하여 반환합니다.
'프론트엔드로 가는 길 > 프로그래머스' 카테고리의 다른 글
52. 정수 내림차순으로 배치하기 (1) | 2023.04.30 |
---|---|
51. 문자열 내 p와 y의 개수 (0) | 2023.04.29 |
48. 컨트롤 제트 (0) | 2023.04.25 |
47. 캐릭터의 좌표 (0) | 2023.04.24 |
46. 로그인 성공 (1) | 2023.04.21 |