🌠 문제
정수 n이 매개변수로 주어질 때, n의 약수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.
🌠 제한사항
- 1 ≤ n ≤ 10,000
🌠 입출력 예
n result
24 [1, 2, 3, 4, 6, 8, 12, 24]
29 [1, 29]
🌠 입출력 예 설명
입출력 예 #1
- 24의 약수를 오름차순으로 담은 배열 [1, 2, 3, 4, 6, 8, 12, 24]를 return합니다.
입출력 예 #2
- 29의 약수를 오름차순으로 담은 배열 [1, 29]를 return합니다.
🧞 풀이
function solution(n) {
// 우선 약수는 항상 두 개씩 한 쌍임
// 따라서 n의 제곱근까지만 탐색해도 다 찾을 수 있음
let sqrt_n = parseInt(Math.sqrt(n));
let answer = [1, n];
for (let i = 2; i <= sqrt_n; i++) {
if (n % i == 0) {
answer.push(i);
answer.push(n / i);
}
}
// 제곱근이 곧 약수일 때,
if (Math.sqrt(n) === sqrt_n) {
answer.pop();
}
return answer.sort((a, b) => (a - b));
}
'🧩 Algorithm > 🟧 JavaScript' 카테고리의 다른 글
[프로그래머스] 가장 큰 수 찾기 (0) | 2023.04.13 |
---|---|
[프로그래머스] 편지 (0) | 2023.04.13 |
[프로그래머스] 한 번만 등장한 문자 (0) | 2023.04.12 |
[프로그래머스] 인덱스 바꾸기 (0) | 2023.04.12 |
[프로그래머스] 영어가 싫어요 (0) | 2023.04.12 |