알고리즘

프로그래머스 Level 1 - 콜라츠 추측 (Javascript)

또롱또 2022. 5. 15. 13:13
728x90

https://programmers.co.kr/learn/courses/30/lessons/12943#

function solution(num) {
    var answer = 0;
    // 반복문 도는걸 셀 변수
    let count = 0;
    
    while(true){
        // 만약 받아온 값이 1이면 count=0 내보냄
        if(num === 1)
            return count
        
        // 짝수 홀수 처리
        if(num%2 === 0){
            num = num / 2;
            count++;
        }else{
            num = (num*3) +1
            count++;
        }
        
        // count > 500처리
        if(count > 500)
            return -1;
        
        // 결과적으로 num이 1이되면 끝
        if(num === 1)
            return count;
    }
    return answer;
}

나는 우직하게 코린이처럼 풀어냈고

재귀함수 안쓰는것 중에서는 아래 정답이 제일 깔끔했던거 같다.

function collatz(num) {
    var answer = 0;
    while(num !=1 && answer !=500){
        num%2==0 ? num = num/2 : num = num*3 +1;
    answer++;
  }
    return num == 1 ? answer : -1;
}
728x90