문제 풀이 (JAVA)

class Solution {
    public int solution(int num) {
        int count=0; // 리턴 할 카운트 변수 선언
        long longnum= num; // int 형은 컴파일 도중 범위 초과 오류가 뜨므로 long 선언
        while(longnum !=1){   // 1이라면 while문 중단 (값이 1일동안 무한 루프)         
          if(longnum % 2 == 0){ // 2로 나눈 나머지가 0이면 짝수
            longnum= longnum/2;
            count++;
          }else if(longnum % 1 == 0){ // 1로 나눈 나머지가 0이면 홀수
            longnum=(longnum*3)+1;
            count++;
          }
          if(count>=500){ // 제한 조건 반복 횟수 500을 넘기면 -1을 리턴
              count = -1;
              break;
          }
        }
        return count;
    }
}

주요 핵심 포인트

 

1.  while 문에서 곱하는 과정에서 값이 커지기 때문에 int형 범위를 초과하는 숫자가 있을수 있으므로 long으로 선언.

2. while 문이 도는 조건은 값이 1이 아닐동안 콜라츠 추측을 반복한다. 따라서 1일 때 반복문 중단

3. 제한 조건 반복횟수 500을 초과하면 -1을 리턴하도록 if문 세팅 필요.

'프로그래머스(JAVA)' 카테고리의 다른 글

짝수와 홀수  (0) 2022.04.16
최대공약수와 최소공배수  (0) 2022.04.16
평균 구하기 Level.1  (0) 2022.04.16
하샤드 수 Level.1  (0) 2022.03.20
핸드폰 번호 가리기 Level.1  (0) 2022.03.20

+ Recent posts