VesselWheel

콜라츠 추측 본문

Coding Test Practice in Swift

콜라츠 추측

JasonYang 2023. 11. 22. 09:18

문제

 

입출력 설명

입출력 예 #1 
문제의 설명과 같습니다. 

입출력 예 #2 
16 → 8 → 4 → 2 → 1 이 되어 총 4번 만에 1이 됩니다. 

입출력 예 #3 
626331은 500번을 시도해도 1이 되지 못하므로 -1을 리턴해야 합니다.

 

풀이

func solution(_ num:Int) -> Int {
    // 매개변수를 number 변수에 할당
    var number = num 
    // count 변수 초기화, 작업의 반복
    var count = 0
    // while 루프를 사용하여 number가 1이 아니고 count가 500 이하인 동안 작업을 반복
    while number != 1 && count <= 500 {
        // number가 2로 나누어지는 작수면 2로 나누고
        if number % 2 == 0 {
            number = number / 2
        } else {
            // 홀수라면 3 곱하고 더하기 1
            number = number * 3 + 1
        } // 작업 반복 시 count 1 증가
        count += 1
    } // 500회 실행 후 1이면 count 1을 반환 아니면(?) -1을 반환 
    return number == 1 ? count : -1
}