728x90
https://school.programmers.co.kr/learn/courses/30/lessons/12943
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