[Programmers] 콜라츠 추측 - 연습문제

동민·2021년 3월 10일
0
// 콜라츠 추측 - 연습문제
public class CollatzConjecture {
	public int solution(int num) {

		int answer = 0;
		long n = (long) num; // int num 으로 하면 int 범위 초과로 오버플로우로 인해 정확한 값이 나오지 않으므로 long으로 변환 해주어야함 (주의)

		while (n != 1) {
			answer++;
			if (answer > 500) {
				return -1;
			}
			n = (n % 2 == 0) ? n / 2 : n * 3 + 1;
		}
		return answer;
	}

	public static void main(String[] args) {

		CollatzConjecture s = new CollatzConjecture();
		System.out.println(s.solution(6)); // 8
		System.out.println(s.solution(16)); // 4
		System.out.println(s.solution(626331)); // -1 ; 오버플로우 처리해야함

	}
}
  • int num 으로 하면 int 범위 초과로 오버플로우로 인해 정확한 값이 나오지 않으므로 long으로 변환 해주어야함 (주의)
profile
BE Developer

0개의 댓글