콜라츠 추측 (연습문제 Lv1 / JS)
코테/프로그래머스

콜라츠 추측 (연습문제 Lv1 / JS)

반응형

https://programmers.co.kr/learn/courses/30/lessons/12943?language=javascript   

문제

위 조건식을 반복하고, 몇번 반복했는지 출력을 하는데
500번 까지 시도를 하여도, 1이 되지 않을경우 -1을 리턴하는 문제 입니다.

 

해당 조건에 따른 반복을 하는 것이기에 while 또는 재귀함수를 생각했습니다.

 

코드

function solution(num) {
    let count = 0;
    while(num!=1 && count!=500){
    if(num%2==0) num = num/2 
    else{
        num = num*3+1;
    }
    count++;
  }
    return num == 1 ? count : -1;
}

while의 조건식을 설정해주고(num이 1이 되거나, count 500이 되면 while문 종료)

while문의 결과에 따른 값에 따라 다시 return 값을 정하는 코드 입니다.

 

function solution(num, count=0){
    return num == 1 ? (count >= 500 ? -1 : count) : solution(num % 2 == 0 ? num / 2 : num * 3 + 1, ++count);
}

위 코드는 재귀함수를 이용하였습니다.

삼항연산자를 사용하였고, count라는 값도 계속 필요하기에 함수 인자에 포함시켰습니다.

반응형