29. 콜라츠 추측
문제 설명
1-1. 입력된 수가 짝수라면 2로 나눕니다.
1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다.
2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다.
Inputs
Variable Name | type | meaning |
---|---|---|
num | Int | input number |
output
return Int // collatzed process count
Conditions
- num
- 1~8000000
Test cases
n | result |
---|---|
6 | 8 |
16 | 4 |
626331 | -1 |
Solution
여태 안쓰려고 했던 반복문을 결국 써야하네 while 루프 쓰면 될듯.
def solution(num: Int): Int = {
var count = 0
var n = num.toLong
while (n != 1 && count < 500) {
if (n % 2 == 0) n = n/2
else n = n*3 + 1
count += 1
}
if (count == 500) return -1
return count
}