학습 노트/JavaScript 코딩테스트

[JavaScript] 반복문 - while

없음 출신 2023. 3. 30. 15:07

#콜라츠추측

Q. 주어진 수가 1이 될 때까지 반복되고, 그 횟수(n)는?

입력된 수가 짝수면 2로 나누고 홀수면 3을 곱한 후 1을 더한다.

function solution(num) {
    var answer = 0;
    while (num != 1) {          // 주어진 수가 1이 아니라면 계속 반복
        if (num % 2 == 0) {
            num = num / 2    // "answer = num / 2"로 작성했었음. | "num /= 2"로도 표현 가능하다.
        } else {
            num = (num * 3) + 1
        }
        answer += 1;            // answer 구하고자 하는 건 횟수잖아. 한 번 반복될 때마다 1을 더해줌으로써 횟수를 표현.
    }
    // 작업을 500번 반복할 때까지 1이 되지 않는다면 -1을 반환
        if (answer >= 500) {
            return -1;
        } else {            // 예외가 아닌 경우(일반적인 경우) 그냥 answer를 리턴해라.
            return answer;
        }
    return answer;
}
// 또다른 풀이
function collatz(num) {

  for(var answer = 0; answer<500; answer++){
    if(num%2==0){
      num = num/2;
    }
    else if(num==1){
        return answer;
    }
    else if(num%2==1){
      num = (num*3)+1;
    }
  }
  //if(answer == 500){return -1;}
    return -1;
}