Algorithm/프로그래머스

[프로그래머스 스위프트] 콜라츠 추측

devKen 2022. 7. 29. 23:16

문제 요약

1-1. 입력된 수가 짝수라면 2로 나눕니다. 
1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 
2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 

여기에 주어진 수가 1이면 0 그리고 500번 반복해도 답이 없으면 -1 반환하면 됩니다. 굉장히 간단한 문제네요

 

해답

func solution(_ num:Int) -> Int {
    var tmp = num
    var cnt = 0
    
    if tmp == 1{
        return 0
    }
    while true {
        guard cnt < 500 else {
            return -1
        }
        if tmp % 2 == 0 {
            tmp = tmp / 2
            cnt += 1
        } else if tmp % 2 == 1 {
            tmp = tmp*3 + 1
            cnt += 1
        }
        if tmp == 1 {
            return cnt
        }
    }
}

다들 비슷하게 푸신 듯..