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

이은정·2024년 8월 21일

프로그래머스/Java

목록 보기
13/74

문제

로직

for문을 이용하여 i는 1~500까지 과정을 반복한다.

반복문 아래에서는 아래를 순서대로 실행한다.
1. 만약 n이 1이라면 i를 return 한다.
2. n이 짝수라면 2로 나눈다.
3. n이 홀수라면 3을 곱하고 1을 더한다.

만약 500번을 반복한 후 반복문을 탈출하였다면 -1을 return 한다.

코드

class Solution {
    public int solution(int num) {
        Long n = (long) num;
        
        for (int i = 0; i < 500; i ++) {
            if (n == 1) {
                return i;
            }
            
            if (n % 2 == 0) {
                n /= 2;
            }
            else {
                n = n * 3 + 1;
            }
        }
        
        
        return -1;
    }
}

결과

막힌 부분

처음에 integer 타입의 num을 그대로 이용하여 문제를 푸니 제공해준 테스트 케이스 중 n=626331인 경우에 integer의 범위를 넘어가 제대로 된 답을 주지 않는 오류가 발생하였다.
그래서 n을 Long 타입으로 변환한 새로운 변수를 이용하여 풀었더니 문제가 해결되었다.

항상 사용하는 타입의 범위를 잘 알고 코드는 틀리지 않았는데 자꾸 오류가 발생한다면 타입의 범위를 생각하는 습관을 들여야겠다.

profile
돈 많은 백수가 꿈인 백엔드 개발자 지망생

0개의 댓글