카테고리 없음

[프로그래머스 level1] 콜라츠 추측

프로아마추어 2021. 12. 8. 13:47

<문제>

<나의 풀이>

class Solution {
    public int solution(int num) {
        int answer = 0;
        
        while(true) {
            if(num==1) {
                answer=0; break;
            }
            if(num%2==0) num = even(num);
            else num = odd(num);
            
            answer++;
            
            if(num==1) {
                break;
            }
            
            if(answer==450) {
                answer = -1;
                break;
            }         
            
        }
        
        return answer;
    }
    
    public static int even(int n) {
        return n/2;
    }
    
    public static int odd(int n) {
        return (n*3)+1;
    }
}

코드 제출 결과

 

-comment

문제에서는 연산 횟수 500회라고 되어있지만 실제로 정수 626331는 488회로 결과값을 가져오고 있어서 연산 횟수를 450회로 수정하였다. 

 

정수 n이 1인 경우에는 결과값이 1이어야 해서 따로 예외처리 해두었다.(예외처리 안할 시 테스트 13번 실패)