본문 바로가기
코딩테스트/프로그래머스

[프로그래머스/Java] Lv.1 콜라츠 추측

by ⓞㅖ롱 2022. 9. 22.

 

다양한 코드가 나올 수 있는 쉬운 문제였다.

 

1) 짝수라면 /2

2) 홀수라면 *3 +1

3) 1이라면 0

4) 500번 계산하면 -1

을 반환해주면 된다.

 

내 코드

class Solution {
    public int solution(int num) {
        int answer = 0;
        int count = 0;

        while(count <= 500){
            if(num == 1) { 
                answer = count; 
                break;
            }

            if(num % 2 == 1)
                num = (num * 3) +1;
            else
                num = num / 2;

            count++;
        }

        if(count > 500) answer = -1;

        return answer;
    }
}

 

while문으로 들어오면 num == 1 인지부터 확인한다. 값이 1이면 count 값의 0을 받고 바로 break;

아니라면 본문의 주문대로 계산을 반복하기 시작한다.

몇 번의 반복을 했는지 count 증감시키고, count가 500이 넘으면 while문 조건으로 인해 중단.

마지막 count > 500 조건식을 통과하여 -1을 반환한다.

 

다른사람 코드

class Solution {
    public int solution(long num) {
        int answer = 0;

        while(num != 1){
            answer++;
            if(answer==500)
                return -1;
            if(num%2==0){
                num/=2;
            }else{
                num=num*3+1;
            }
        }
        return answer;
    }
}

 

내 코드와 비슷하지만 나보다 변수 하나 덜 써서 만들어진 코드

count를 따로 선언하지 않고 answer를 그대로 사용했다.

num의 값이 1이 될 경우, 해당 answer 값을 반환한다. 깔끔하고 괜찮은 코드같다.