Algorithms/- 프로그래머스

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

자굿 2022. 2. 12. 01:49
 

코딩테스트 연습 - 콜라츠 추측

1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2

programmers.co.kr

 

정답(Solution)

class Solution {
    public int solution(int num) {

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

        long n = (long) num;

        for(int i=0; i<500; i++){
            n = collatz(n);
            if(n == 1){
                return i+1;
            }
        }

        return -1;
    }

    private long collatz(long n){
        if(n % 2 == 0){
            n = n / 2;
        }else{
            n = (n * 3) + 1;
        }
        return n;
    }
}

 

분석

  • num을 값이 8천만이기 때문에 3을 곱하였을때 21억이 넘어 long으로 풀어줘야 한다.
  • 또한 num 가 1일때 collatz함수에 대입해보면 0이 아니라 3이 나오기 때문에 제일 앞쪽에서 예외처리 하여야 한다.
반응형