TIL/kotlin 알고리즘

프로그래머스 lv1 콜라츠 추측

crablo 2024. 1. 25. 15:18
728x90

 

문제를보자마자 입력받은 숫자가 나눠지고 곱해지고.. 변형이 되어서

숫자를 변형될때마다 저장하는 변수가 필요하다는 생각이 들었다.

 

  그래서 currentNum 이라는 변수에 매개변수 num을 저장하게끔 처음부터 초기화했다.

 

하지만 코드를 다 작성해도 

3개중 2개만 통과된다.

계속해서 마지막것은 실행이 되지않아 다른사람들의 코드를 참조했다.

class Solution {
    fun solution(num: Int): Int {
        var longNum = num.toLong()
        var count = 0
        while (count < 500 && longNum > 1) {
            count ++
            longNum = if (longNum % 2 == 0L) longNum / 2 else longNum * 3 + 1
        }
        return if (count == 500) -1 else count
    }
}

 

먼저 num 타입을 long으로 바꿨고

생각해보니 currentNum 에 1이 아닌것을 참으로 해버리면 예외가 많이 발생할것 같았다.

728x90