Archive/Questions

[programmers/Swift] 콜라츠 추측

Marco 2022. 4. 25. 09:13
728x90

programmers.co.kr - 코딩테스트연습 - Lv.1 - 연습문제 - 콜라츠 추측

 

코딩테스트 연습 - 콜라츠 추측

1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2

programmers.co.kr

 


Constraints :

  • 입력된 수,  num은 1 이상 8000000 미만인 정수입니다.

 

Solution.swift :

//
//  Created by Yongwoo Marco on 2022/04/23.
//  Copyright © 2022 Yongwoo Marco Kim. All rights reserved.
//

func solution(_ num:Int) -> Int {
    guard num != 1 else { return 0 }
    var n = num
    
    for count in 1..<500 {
        if n % 2 == 0 {
            n /= 2
        } else {
            n = 3 * n + 1
        }
        guard n != 1 else { return count }
    }
    
    return -1
}

print(solution(6)) // 8
print(solution(16)) // 4
print(solution(626331)) // -1

How I tried this :

조건이 1이상인데 num이 1이면 4가 되기 때문에 맨 처음 걸러주고,

이후에 다른 수는 1이 될때까지 반복함

 

문제에 관한 모든 저작권 : https://programmers.co.kr/

728x90