오늘의 문제는 콜라츠추측이다.
* 예를들어 6이라는 숫자가 들어온다면
6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 총 8회만에 1이 된다.
return result = 8;
이렇게 되는 것이다.
class Solution {
public int solution(long num) {
int count = 0;
for(int i = 0; i<500; i++){
if(count >= 500){
return -1;}
if(num == 1){
return count;
}
if(num%2 == 0){
num = num/2;
}else{
num = num*3+1;
}
count++;
}
return -1;
}
}
이문제 같은 경우에는 정말 어렵지 않게 풀었나..? 했는데 프로그래머스의 코드실행에서 케이스3가 자꾸 통과하지 못하여 어려움을 겪었다..
하지만 아니나 다를까.. 해당부분에서 통과하지 못한 이유는 처음에 solution 매서드의 매개변수값을 int num 으로 주어 626331 이 들어왔을때 반복해서 계산했을때 int값의 범위를 초과하여서 생기는 문제였다. 그래서 int -> long 으로 변환후 실행했더니 아주 깔끔하게 통과했다. :)