콜라츠 추측(프로그래머스)

문제설명

  • 주어진 수가 1이 될때까지 다음 작업을 반복
  • 1) 입력된 수가 짝수라면 2로 나눈다
  • 2) 입력된 수가 홀수라면 3을 곱하고 1을 더한다
  • 3) 결과가 나온 수에 같은 작업을 1이 될 때까지 반복
  • 단, 500번을 반복해도 1이 되지 않는다면 -1 반환

제한사항

  • 입력된 수는 1이상 8000000미만인 정수

풀이

function solution(num) {
    let count = 0;
    const CollatzFunc = (num)=> {
        if(count === 500)
            return -1;
        if(num === 1){
            return count;
        }
        if(num % 2 === 0){
            ++count;
            return CollatzFunc(num / 2);
        }
        else if(num %2 === 1){
            ++count;
            return CollatzFunc(num * 3 + 1);
        }
    }
    return CollatzFunc(num);
}

체크포인트

  • 최대공약수, 최소공배수 문제에서 재귀함수를 활용했던 방법을 이용해 문제해결

좋은 웹페이지 즐겨찾기