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

지윤·2023년 1월 28일
0

프로그래머스

목록 보기
61/69

문제

풀이

function solution(num) {
    let count = 0;

    if(num == 1){
        return 0;
    }
    
    while(num >= 1){

        if(num % 2 == 0){
            num = num/2;

            count++;
        }else{
            num = (num * 3) + 1
            count++;
        }

        if(num == 1){
            return count;
        }else if(count == 500){
            return -1;
        }

    }

}

조잡 of 조잡한 코드이지만 ㅎ... 그래도 내 힘으로 풀었으니까 만족!^^!
분명히 코드를 줄일 방법이 있을 것 같은데.. 꼭 다시 풀어봐야지!
일단 처음 생각은

  • num이 1이 될때까지 반복문을 돌아야하고
  • num % 2 == 0 (짝수) 일때 num / 2
  • 홀수일때 (num * 3) + 1
  • 그리고 연산할때마다 count + 1해주기

이러고서 돌렸는데 실패 뜨길래 보니까 단, 주어진 수가 1인 경우에는 0,
작업을 500번 반복할 때까지 1이 되지않는다면 -1을 반환한다.
문제 좀 잘 읽자..!^^
그래서 맨 위에 num == 1일때 return 0 하는걸 넣어줬고,
num == 1이 됐으면 카운트 해준거 return, count == 500이면 -1을 return 해줬다!

profile
방금 태어난 개발자

0개의 댓글