프로그래머스 콜라츠추측

HyunHwa Cho·2022년 7월 8일
0

오늘의 문제는 콜라츠추측이다.

문제설명

1. 정수 num 을 입력받아서 해당 숫자가 짝수일 경우 2로 나누고 홀수인경우 3을 곱한후 1을 더한다.

2. 위와 같은 계산을 반복하여 1이나올경우 짝수일 경우 나누거나 홀수인경우 계산 한 횟수를 정수로 int타입의 정수로 return 하면 된다.

3. 만약 500회가 초과 된다면 -1을 반환한다.

4. num 이 1일 경우 0을 반환한다.

* 예를들어 6이라는 숫자가 들어온다면 
 631051684218회만에 1이 된다.
return result = 8; 

이렇게 되는 것이다.

class Solution {
    public int solution(long num) {
        int count = 0;
        for(int i = 0; i<500; i++){
            
            if(count >= 500){
                return -1;}
            if(num == 1){
                return count;
            }
            if(num%2 == 0){
                num = num/2;
            }else{
                num = num*3+1;
            }
            count++;
        }
            
        return -1;
    }
}

이문제 같은 경우에는 정말 어렵지 않게 풀었나..? 했는데 프로그래머스의 코드실행에서 케이스3가 자꾸 통과하지 못하여 어려움을 겪었다..
하지만 아니나 다를까.. 해당부분에서 통과하지 못한 이유는 처음에 solution 매서드의 매개변수값을 int num 으로 주어 626331 이 들어왔을때 반복해서 계산했을때 int값의 범위를 초과하여서 생기는 문제였다. 그래서 int -> long 으로 변환후 실행했더니 아주 깔끔하게 통과했다. :)

profile
개발 공부 및 기록용 블로그 입니다.

0개의 댓글