[프로그래머스 | JavaScript] 콜라츠 추측

728x90
반응형

(1) 내 코드

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

▶ 생각하지 못한 부분 : num =1 이면 예외처리해줘야함 => return 0

반복
숫자가 짝수야? 그럼 나누기 2 (count +1)
숫자가 홀수야? 그럼 곱하기 3 +1 (count +1)
:
500번 되도 못했네? -1 끝

 

 

(2) 다른사람 풀이

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;
}

깔끔하다.. 

num =1 아니고 anwser이 500이 아닐때 ( 들어가서 삼항연산자 + answer +1) 

 

끝.

반응형