CS/Programmers

[Programmers.Lv1] 콜라츠 추측

칸타탓 2020. 8. 8. 18:22

풀이

입력된 수, num은 1 이상 8000000 미만인 정수라고 주어지는데, 이때 num을 int로 받으면 범위가 벗어남.

long num으로 받아서 풀어야한다.

 

int 범위: 부호 있는 정수 (32 bits)      -2147483648 ~ 2147483647

long 범위: 부호 있는 정수 (64 bits)      -9223372036854775808 ~ 9223372036854775807

 

코드

public class 콜라츠_추측 {
    public static void main(String[] args) {
        // Test case
        long num = 626331;

        solution(num);
    }

    public static int solution(long num) {
        int answer = 0;

        while(num != 1) {
            if(answer >= 500){
                answer = -1;
                break;
            }

            if(num % 2 == 0) {
                num = num / 2;
            } else {
                num = (num * 3) + 1;
            }
            answer++;
        }

        return answer;
    }
}