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문을 종료시킨다.