728x90
반응형
문제
소인수분해란 어떤 수를 소수들의 곱으로 표현하는 것입니다.
예를 들어 12를 소인수 분해하면 2 * 2 * 3 으로 나타낼 수 있습니다.
따라서 12의 소인수는 2와 3입니다.
자연수 n이 매개변수로 주어질 때 n의 소인수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
2 ≤ n ≤ 10,000
내 답
function solution(n) {
if(n===2){
return [2]
}
let answer = 2
const Arr = []
while(answer <= n){
if(n%answer!==0){
answer = answer+1
}
if(n%answer===0){
n = n/answer
Arr.push(answer)
}
}
const set = new Set(Arr)
const unique = [...set]
// const unique = Arr.filter((el, idx)=> Arr.indexOf(el) === idx)
return unique
}
solution(50)
팩토리얼 문제에서 쓴 while 문을 활용해서 풀었다
answer 가 1로 시작하면 n이 무한루프 돌기 때문에 (n 몫이 똑같음)
2는 따로 빼어 리턴 처리했다 (이때 2 배열로 안 넣어서 엄청 삽질했다... 😂, 중복 체크하는 식에 문제 있나 엄청 들여다봄...)
n 을 나눌 수 있는 한 계속 작은 수로 나누기 위해
나머지가 0이라면 n/answer 로 나눈 후 그 몫을 n으로 지정해 다시 n을 answer로 나누게 했고
나머지가 나올시 answer 에 1를 더하여(while 조건문 때문에 계속 돌아감) 다시 나머지가 없는 answer 값이 나오도록 했다
728x90
반응형
'TIL' 카테고리의 다른 글
dependencies 와 devDependencies 차이 (0) | 2022.12.27 |
---|---|
.env / .env.production / .env.development 차이 (0) | 2022.12.27 |
js 코딩테스트 팩토리얼 문제 (0) | 2022.12.23 |
react git action ci / cd 배포 환경 설정(.env) (0) | 2022.12.19 |
CI/CD 시 만났던 오류 : parserOptions.project" has been set for @typescript-eslint/parser." (0) | 2022.12.19 |
댓글