Programmers/Level 1

[Javascript] 프로그래머스 : 콜라스 추측

emayom 2021. 6. 30. 12:06

⚠️ 아래 내용은 모두 개인적인 참고 / 기록을 위한 용도 입니다. 참고해주시고 편안하게 봐주세요 :) ⚠️

 

 

[Javascript] 프로그래머스 Level1 _ 콜라스 추측

 

👇🏻문제링크

 

 

👇🏻

시행착오

( + 코드를 작성하면서든 생각들.)

 

1.

처음에 while문으로 각각 짝수 / 홀수에서 answer++를 모두 적으려니 복잡해보여서

for문으로 무한반복을 돌리고 내부에서 num이 1이되면 멈추도록 구성했다!

카운트를 1부터 계속해서 짝홀과 상관없이 카운트를 세고 값을 리턴했다.

(그래서 answer를 반복문 외부에서 선언하고 for문 내에서 초기화했다!)

function solution(num) {
    var answer;
    
    for(answer=1; ;answer++){
        (num%2)? num = num*3+1 : num/=2;

        if(num == 1)
            break;
    }
    return (answer>=500)? -1 : answer;
}

문제는 이러면 정확성 테스트에서 93.8점이나온다....ㅎㅎㅎㅎ

내가봐도 복잡해보여,,

 

2.

혹시나해서 do-while 루프를 돌렸는데

얘도 93.8점이 나온다.

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

3.

마지막으로 for문의 조건문에 num!=1 을 넣었는데 

바로 통과되서 좀 허무했다 ㅎㅎㅎㅎ ,,

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