[Javascript : programmers] 콜라츠 수열 만들기 (Lv.0)
문제
나의 정답 풀이
function solution(n) {
let arr = [];
while(n>=1){
if(n == 1){
arr.push(n);
break;
}
arr.push(n);
if(n%2==0) n/=2;
else n = 3*n+1;
}
return arr;
}
while 반복문을 돌면서 n이 1일 때 break 하는 것이 핵심이다.
무한루프로 n을 배열에 넣고 짝수, 홀수에 따라 n을 변경한다.
다른 사람 풀이
function solution(n, arr = []) {
arr.push(n)
if (n === 1) return arr
if (n % 2 === 0) return solution(n / 2, arr)
return solution(3 * n + 1, arr)
}
재귀함수를 사용하여 풀은 색다른 풀이이다.
함수는 항상 n과 함수 arr을 매개변수로 받는다.
n이 1인 경우에는 끝나는 경우로 재귀하지 않고 배열을 반환한다.
n이 짝수인 경우에는 n/2 를, 그 외의 경우엔 n*3 +1 을 인자로 넘긴다.
'Javascript > 자바스크립트 문제' 카테고리의 다른 글
[Javascript : programmers] 배열 만들기 6 (Lv.0) (0) | 2024.08.26 |
---|---|
[Javascript : programmers] 배열 만들기 5 (Lv.0) (0) | 2024.08.26 |
[Javascript : programmers] 한 번만 등장한 문자 (Lv.0) (0) | 2024.08.21 |
[Javascript : programmers] 가까운 수 (Lv.0) (0) | 2024.08.20 |
[Javascript : programmers] A로 B 만들기 (Lv.0) (0) | 2024.08.20 |