콜라츠 추측 [Java]

sua·2022년 12월 16일
0

문제

풀이

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

우선 num을 그대로 쓰면 오버플로우가 되기 때문에 long 타입의 n을 사용한다.
while문을 n이 1이 아닐때까지 반복한다. n을 2로 나누었을 때 나머지가 0인 경우에는 n을 2로 나누고, 그외의 경우에는 n에 3을 곱한 후 1을 더해준다.
이 과정을 거친 뒤에 answer을 증가시킨다. 그런 다음 answer이 500보다 큰지 비교하고 500보다 큰 경우에는 answer에 -1을 할당해서 while문을 종료시킨다.

결과

profile
가보자고

0개의 댓글

관련 채용 정보