티스토리 뷰

1. 주어진 수가 1이라면 0을 반환
2. 주어진 수가 짝수면 2로 나누고, 홀수면 3을 곱한 후 1을 더함
3. 결과 수가 1이 될 때까지 반복함
4. 반복 횟수가 500을 넘으면 -1을 반환함

 

해당 순서에 맞게 반복문과 조건문을 결합해주면 다음과 같다.

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

 

더 좋은 다른 사람의 코드는 다음과 같다.

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

 

삼항연산자를 사용해 간결함을 잡았다.

댓글