프로그래머스 - 콜라츠 추측(Java)

윤민선·6일 전

프로그래머스

목록 보기
92/96
post-thumbnail

문제 설명

정수 num이 주어질 때 다음 작업을 반복하는 문제이다.

  • num이 짝수 → num / 2
  • num이 홀수 → num * 3 + 1

num이 1이 되기까지 몇 번의 작업이 필요한지를 구하는 것

단, 500번을 반복해도 1이 되지 않으면 -1을 반환한다.


접근 방법

while문을 사용해 num이 1이 될 때까지 반복한다.

반복할 때마다:

  1. 짝수인지 확인한다.
  2. 짝수면 2로 나눈다.
  3. 홀수면 3을 곱하고 1을 더한다.
  4. 연산 횟수를 1 증가시킨다.
  5. 500번을 넘으면 -1을 반환한다.

최종 코드

class Solution {
    public int solution(long num) {
        if (num == 1) return 0;

        int answer = 0;

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

            answer++;

            if (answer == 500) {
                return -1;
            }
        }

        return answer;
    }
}

실행 결과

0개의 댓글