[Lv.1] 콜라츠 추측

01수정·2023년 11월 11일
0

문제


풀이

  • 문제설명에 나와있는 설명 그대로 풀이
  • 이렇게 무식하게 풀어도 되는건가? 그런데 주어진 수가 작아서 그런건지 생각보다 실행시간이 짧았다.
function solution(num) {    
    if (num === 1) return 0;
    let turn = 0;
    while (num !== 1) {
        if (num % 2 === 0) {
            num /= 2;
        } else {
            num = num * 3 + 1;
        }
        turn += 1;
        
        if (turn === 500) return -1;
    }
    return turn;
}


다른 풀이

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;
}
  • 재귀함수 사용
function collatz(num, count = 0) {
    return (num == 1) ? ((count >= 500) ? -1 : count) : collatz((num % 2 == 0) ? num / 2 : (num * 3) + 1, ++count);
}
profile
새싹 FE 개발자

0개의 댓글