프로그래머스 문제(Java) No.13 <콜라츠 추측>

오하수·2026년 1월 27일

이 문제는 주어진 수가 짝수이면 2로 나누고, 홀수이면 3을 곱한 뒤 1을 더하는 과정을 반복하면서 해당 연산이 1이 될 때까지 몇 번 수행되는지를 계산하는 문제이다.

주어진 수가 1인 경우에 0, 수행된 횟수가 500번을 넘길 때까지 1이 되지 않으면 -1을 반환하여야합니다.


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

    while(true){
      if (num % 2 ==0){
        num /= 2;
        count += 1;
      }
      else {
        num = num *3 + 1;
        count += 1;
      }
      if (num == 1){
        break;
      }
    }
    if(count > 500){
      return -1;
    }
    else{
      return count;
    }
  }
}

while(true)를 사용해서 무한 루프를 굴려주고 정수가 1이 되면 break로 반복문을 빠져나오게 만들면 되는 간단한 문제입니다.

public class Main{
  public static void main(String[] args) {
    Solution sol = new Solution();
    int result = sol.solution(626331);
    System.out.println(result);
  }
}

626331은 카운트 횟숫가 500이 넘어가기 때문에 -1을 반환하는 것을 볼 수 있습니다.

profile
오늘하루도수고하세용~

0개의 댓글