프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
소인수분해란 어떤 수를 소수들의 곱으로 표현하는 것입니다. 예를 들어 12를 소인수 분해하면 2 * 2 * 3 으로 나타낼 수 있습니다. 따라서 12의 소인수는 2와 3입니다. 자연수 n이 매개변수로 주어질 때 n의 소인수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.
입출력 예
n | result |
12 | [2,3] |
17 | [17] |
코드
const solution = (n) => {
let answer = [];
let i = 2;
while (i <= n) {
if (n % i === 0) {
answer.push(i);
n = n / i;
} else {
i++;
}
}
return [...new Set(answer.sort((a, b) => a - b))];
}
풀이
소인수분해를 구해야하니 i가 n보다 작거나 같을 때 n 나누기 i가 0이라며 소인수이기 때문에 배열에 추가해주며 i로 나눈 몫을 업데이트해줍니다. 그 후 나눌 수 없다면 i를 증가 시켜 소인수를 찾습니다.
while (i <= n) {
if (n % i === 0) {
answer.push(i);
n = n / i;
} else {
i++;
}
}
배열을 정렬하고 중복제거한 후 배열로 반환합니다.
return [...new Set(answer.sort((a, b) => a - b))];
더보기
new Set
: 중복된 요소를 제거하기 위함입니다.
...(전개연산자)
: set 객체를 배열로 변환합니다.
'자바스크립트' 카테고리의 다른 글
[JavaScript] 프로그래머스 문자열 섞기 (0) | 2024.04.02 |
---|---|
[JavaScript] 프로그래머스 대소문자 바꿔서 출력하기 (0) | 2024.03.25 |
[JavaScript] 숨어있는 숫자의 덧셈 (0) | 2023.09.18 |
[JavaScript] 문자열 정렬하기 (1) (0) | 2023.09.18 |
[JavaScript] 모음제거 (0) | 2023.09.18 |