// 콜라츠 추측 - 연습문제
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 ; 오버플로우 처리해야함
}
}