1차 시도 - 실패
function solution(n) {
let temp = []
for(let i=2; i<=n; i++){
if(n % i===0){
temp.push(i)
n = n/i
}
}
return temp;
}
▶ 예를 들어서 n = 48인 경우 temp =[ 2, 3 ] 이 나와야 정상인데,
▶ 위 코드를 실행하는 경우 temp = [ 2, 3, 4] 가 나오는 오류가 발생한다.
2차 시도 - 소인수를 구하는 방법이용
function solution(n) {
let answer = [];
for(let i = 2; i <= n; i++) {
while (n % i === 0) { //만약에 i로 나누어진다면, i로 나누어 떨어질때까지 계속 나누겠다.
//n=48이고 i=2인 경우 48에 숨겨진 2는 모두 다 써버리겠다.
n = n / i;
answer.push(i);
}
// console.log(n) //n=48을 계속 나눈 경우 n=3이 되었을 때 while문을 탈출한다
}
return [...new Set(answer)]; //answer의 중복된 요소를 제거하고, spead연산자를 이용해 배열타입으로 반환한다.
}
▶ while문을 이용해서 해당 소수를 다 써버린다.
'프로그래머스(자바스크립트) > LV.0(자바스크립트)' 카테고리의 다른 글
이진수 더하기 → toString(2): 이진수 문자열로 바뀌줌!! (0) | 2023.03.02 |
---|---|
숨어있는 숫자의 덧셈(2) → 아이디어가 매우 중요 + split (0) | 2023.03.01 |
한번만 등장한 문자 → 정규식 이용 문자 제거 + indexOf() + lastIndexOf() 콜라보 ★ (0) | 2023.03.01 |
진료순서 정하기 → 신박한 풀이 ★ ★ ★ (0) | 2023.03.01 |
k의 개수 → number타입을 String타입으로 변환 (0) | 2023.03.01 |