알고리즘(Algorithm)/프로그래머스(Programmers)

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

나아가는중 2021. 11. 3. 14:28
반응형

프로그래머스 콜라츠 추측 - JAVA


문제 설명

  1. 입력된 수가 짝수라면 2로 나눕니다.
  2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다.
  3. 결과로 나온 수에 1 ~ 2 작업을 1이 될 때까지 반복합니다.

제한 사항

  1. 입력된 수, num은 1 이상 8000000 미만인 정수입니다.

문제 풀이

  1. 입력으로 주어진 num을 가지고 작업을 반복하다 보면 int범위를 초과하는 경우가 발생(ex 테스트 케이스 3)하기 때문에 long type으로 입력을 변경.
  2. 작업을 반복할때마다 answer를 증가시키므로 while 조건문에서 num이 1이 될 때까지 그리고 answer가 500되기 전까지로 설정한다.
  3. while 조건문을 만족할때까지 문제 설명의 1~2작업을 반복한다.
  4. 작업 횟수가 500이 넘는지 비교하고 넘는경우 -1을, 아닌 경우 횟수(answer)를 리턴한다.

소스 코드

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

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

            answer++;
        }

        return answer >= 500 ? -1 : answer;
    }
}
반응형