본문 바로가기
Log/Coding Test

Day89_Programmers Lv.1 콜라츠 추측 Java

by uxia 2023. 12. 25.

프로그래머스 Lv.1 '콜라츠 추측' 자바

 

Q. 1937년 Collatz란 사람에 의해 제기된 이 추측은

주어진 수가 1이 될 때까지 다음 작업을 반복하면

모든 수를 1로 만들 수를 1로 만들 수 있다는 추측이다.

작업은 다음과 같다.

 

1-1. 입력된 수가 짝수라면 2로 나눈다.

1-2. 입력된 수가 홀수라면 3을 곱한 후 1을 더한다.

2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복한다.

 

class Solution {
    public int solution(long num) {
        int answer = 0;
        
        while (num != 1) {
            if (num % 2 == 0) {
                num /= 2;
            } else if (num % 2 != 0) {
                num = num * 3 + 1;
            }
            answer++;
            
            if (answer >= 500) {
                answer = -1;
                break;
            }   
        }
        return answer;
    }
}

 

반복문 while을 통해 1이 나올때까지 반복하되

500을 넘어가면 -1을 반환하고 중단하도록 했다.

 

그리고 if문으로 짝수인 경우와 홀수인 경우를

나누어 계산하도록 했다.

 

마지막 테스트에서 오류가 났는데,

숫자가 너무 커서 int를 long으로 변환해주니 해결됐다.