
for문을 이용하여 i는 1~500까지 과정을 반복한다.
반복문 아래에서는 아래를 순서대로 실행한다.
1. 만약 n이 1이라면 i를 return 한다.
2. n이 짝수라면 2로 나눈다.
3. n이 홀수라면 3을 곱하고 1을 더한다.
만약 500번을 반복한 후 반복문을 탈출하였다면 -1을 return 한다.
class Solution {
public int solution(int num) {
Long n = (long) num;
for (int i = 0; i < 500; i ++) {
if (n == 1) {
return i;
}
if (n % 2 == 0) {
n /= 2;
}
else {
n = n * 3 + 1;
}
}
return -1;
}
}

처음에 integer 타입의 num을 그대로 이용하여 문제를 푸니 제공해준 테스트 케이스 중 n=626331인 경우에 integer의 범위를 넘어가 제대로 된 답을 주지 않는 오류가 발생하였다.
그래서 n을 Long 타입으로 변환한 새로운 변수를 이용하여 풀었더니 문제가 해결되었다.
항상 사용하는 타입의 범위를 잘 알고 코드는 틀리지 않았는데 자꾸 오류가 발생한다면 타입의 범위를 생각하는 습관을 들여야겠다.