Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- pm2
- 로드 밸런싱
- SSH
- SSL
- 브라우저
- workflow
- webp
- CI
- 검색엔진최적화
- nginx
- DNS
- 이미지 압축
- 렌더링 과정
- nextJS
- 자동화
- https
- certbot
- aws
- gitgub actions
- TLS
- 이미지 포맷 변경
- 성능 개선
- 인증서
- 무중단
- 리버스 프록시
- 이미지 최적화
- ec2
- 3-Way HandShake
- 배포
- tcp
Archives
- Today
- Total
개발일기
[Javascript] 소인수분해 본문
문제 설명
소인수분해란 어떤 수를 소수들의 곱으로 표현하는 것입니다. 예를 들어 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] |
풀이
function solution(n) {
var answer = [];
let num = n;
let i = 2;
while (num > 1) {
if (num % i === 0) {
num = num / i;
answer.push(i);
} else {
i++;
}
}
return answer.filter((item, index) => answer.indexOf(item) === index);
}
풀이 설명
1. 먼저 소인수분해 값을 구하기 위해 while문을 사용하여 num의 값이 나눌수 없는 값이 될 때 까지 반복한다. (i의 값은 나눌 수 있는 최소 값이 2로 한다)
2. num의 값을 i로 나누었을 때 나머지가 0이 된다면 num의 값에 num을 i로 나눈 값을 할당하고, i의 값을 answer 배열에 push()한다. 만약 i의 값으로 나누었을 때 나머지가 0이 되지 않는다면 i에 +1을 해준다.
3. while문이 종료되면 소인수분해값이 answer이라는 배열에 담기는데, filter()와 indexOf()메서드를 사용하여 중복된 값을 없애준 후 리턴한다.
'Algorithm' 카테고리의 다른 글
[JavaScript] 문자열 계산하기 (0) | 2024.07.16 |
---|---|
[JavaScript] 컨트롤 제트 (5) | 2024.07.15 |
[JavaSciprt] 잘라서 배열로 저장하기 (0) | 2024.07.15 |
[JavaScript] k의 개수 (0) | 2024.07.11 |
[JavaScript] 7의 개수 (0) | 2024.07.11 |