몸과 마음이 건전한 SW 개발자

프로그래머스 [Lv. 0] 콜라츠 수열 만들기 {언어 : JavaScript} 본문

개발 언어 입문/자바스크립트

프로그래머스 [Lv. 0] 콜라츠 수열 만들기 {언어 : JavaScript}

스위태니 2024. 3. 5. 16:33

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/181919

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

정답 코드

function solution(n) {
    const answer = [];
    const recursion = (v) => {
        answer.push(v)
        if (v == 1) {
            return
        }
        if (v % 2) {
            recursion(3 * v + 1)
        } else {
            recursion(v / 2)
        }
    }
    recursion(n);
    return answer;
}

풀이 방법

  1. 재귀함수를 통해 answer의 배열을 완성했다.
    1. v를 answer에 push한다.
    2. v가 1일 경우 콜라츠 수열이 완성되었기 때문에 return 한다.
    3. 짝수면 3 * v + 1로 재귀
    4. 홀수면 v / 2로 재귀한다.
  2. recursion(n)으로 재귀함수를 실행한다.