프로그래머스 알고리즘 문제 콜라츠 추측

작성자 : 조회수 :

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/12943

사실 다른 해결법으로는 파라미터 int 값 num을 long으로 변환하여 오버플로우를 방지하는 방법도 있지만

애초에 오버플로가 일어날만큼 큰 숫자는 500회를 넘어가는 숫자이기에 오버플로우로 인한 음수는 바로 -1을 반환하도록 했습니다


package Question;
/**
* 콜라츠 문제 2023-10-04
* https://school.programmers.co.kr/learn/courses/30/lessons/12943
*
*/
public class CollatzQuestion {
public static void main(String[] args) {
int resultNum = solution( 626331);
System.out.println(resultNum);
}
public static int solution(int num) {
int answer = 0;
boolean repeat = true;
while(repeat){
if(answer == 500 || num < 0) {
answer = -1;
repeat = false;
} else if (num == 1) {
repeat = false;
} else{
if(num%2 == 0){
num = num/2;
}else{
num = num*3+1;
}
answer++;
}
}
return answer;
}
}