Algorithm
[Swift] 프로그래머스 - 콜라츠 추측
배고픈개발자
2023. 7. 3. 09:45
func solution(_ num:Int) -> Int {
func find(_ num :Int, _ count: Int = 0) -> Int {
if num == 1 { return count}
if count == 500 { return -1}
if num % 2 == 0 {
return find(num / 2, count + 1)
} else {
return find(num * 3 + 1, count + 1)
}
}
return find(num)
}
재귀함수를 사용해서 풀었습니다.
num과 count를 파라미터로 정의하여 재귀호출 시 사용할 수 있도록 하였습니다.
num이 1이 됐을 때는 count를 리턴하고, 500에 도달했을 경우는 불가능한 경우니까 -1을 리턴합니다.
짝수일 때는 num / 2를, 홀수일 때는 num * 3 + 1를 전달하고 return된 값을 다시 Return 합니다.
var count: Int = 0
func solution(_ num:Int) -> Int {
if num == 1 { return count }
if count == 500 { return -1 }
count += 1
if num % 2 == 0 {
return solution(num / 2)
} else {
return solution(num * 3 + 1)
}
}
또는 이렇게도 가능합니다.