개발자 '쑥말고인절미'

[프로그래머스] JS 콜라츠 추측 본문

STUDY/코딩테스트

[프로그래머스] JS 콜라츠 추측

쑥말고인절미 2022. 8. 16. 23:21

문제


내 답안

function solution(num) {
    var answer = 0;

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

메모

오늘 피곤했던걸까 간단한 문제였음에도 너무 헤맸다. 왜 테스트를 통과하지 못하는지 원인파악을 빨리 못했는데, 알고보니 입력된 수가 1인 경우를 처리해주지 않아서였다. if문 안에 return answer만 적어줘도 됐던것을... 잠을 빨리 자야겠다.

아래는 친구가 작성한 코드이다. 허락받고 올린다. while문을 쓰기도 했고 나보다 더 깔끔하게 적었다. 나는 while문을 안써버릇해서 또 for문을 사용했는데 확실히 이번엔 while문이 깔끔한 것 같다. (그냥 내가 지저분하게 적은걸까 =.=....)

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

참고링크