Programmers/Lv. 1

[Kotlin] Programmers Lv.1 콜라츠 추측

chattymin 2023. 8. 21. 21:51
728x90
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/12943

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

Code


class Solution {
    fun solution(num: Int): Int {
        var number: Long = num.toLong()
        var answer = 0

        while (answer < 500){
            if (number == 1L) return answer

            if (number % 2 == 0L) number /= 2
            else number = number * 3 + 1
            answer++
        }

        return -1
    }
}

생각보다 간단했지만, 하나 함정이 있었다.

 

짝수면 2로 나누고, 홀수면 3을 곱한 후 +1을 한다. 그리고 조건상 숫자가 1이 되면 종료해야한다.

이거는 while문 내부의 if else니까 정말 쉽다.

 

그리고 또다른 조건인 500 이하여야 한다는 것 또한 while문을 최대 500번 돌아가도록 설정하면 된다.

 

그럼 함정이 뭘까.

 

바로 입력값에 속으면 안된다.

입력값은 Int이지만, 내부 결과는 int의 범위를 벗어날 수 있다.

그렇기 때문에 Long으로 선언해야 한다.

 

 

그러면 끝~

728x90
반응형