코딩테스트 연습 10: [프로그래머스] 콜라츠 추측

gyomni·2022년 1월 22일
0

Algorithm

목록 보기
10/33
post-thumbnail

출처 : 프로그래머스
사용 언어 : JavaScript

초기 코드

function solution(num) {
    var answer = 0;
    return answer;
}

내가 작성한 코드

function solution(num) {
    var answer = 0;
   while(num!==1){
       if(answer>500){
           return -1;
           break;
           
       }
       num%2===0?num=num/2:num=num*3+1;
       answer++;
   }
      return answer;
    }
  

다른 사람 풀이

// 1)

unction collatz(num,count = 0) {
    return num == 1 ? (count >= 500 ? -1 : count) : collatz(num % 2 == 0 ? num / 2 : num * 3 + 1,++count);
}

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

-------------------------------------------------------------------------------
  
// 3)

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

🙍‍♀️ 📝

🔊 return문 자체가 현재 함수를 종료시키고 그 함수를 호출했던 곳으로 되돌아가라는 의미이기에 break는 안쓰는게 맞는 것같다! return문은 break랑 비슷한 역할!!

처음에for으로 해보려다가 좀 헤맸다.....🙄ㅠ🙄
while(num !=1 && answer !=500)이렇게 while문 안에 조건을 두개 넣으니 코드를 좀 더 간단하게 작성할 수 있었네!

profile
Front-end developer 👩‍💻✍

0개의 댓글