중요한 포인트는 if문으로 구성해야 한다는 것입니다. 모든 경우를 계산해야하기 때문에 else if 를 사용하면 오답이 됩니다. 

import Foundation

let line = Int(readLine()!)!

var arr: [Int] = Array(repeating: Int.max-1, count: line+1)
arr[line] = 0

for n in stride(from: line, to: 1, by: -1) {
    arr[n-1] = min(arr[n] + 1, arr[n-1])
    if n % 2 == 0 && n % 3 == 0 {
        arr[n/2] = min(min(arr[n/3], arr[n/2]), arr[n]+1)
    }
    if n % 2 == 0 {
        arr[n/2] = min(arr[n] + 1, arr[n/2])
    }
    if n % 3 == 0 {
        arr[n/3] = min(arr[n] + 1, arr[n/3])
    }
    
}

print(arr[1])

'Algorithm > Baekjoon' 카테고리의 다른 글

Swift - 백준 2606번  (0) 2024.08.30
Swift - 백준 1541번  (0) 2024.08.30
Swift - 백준 1764번 듣보잡  (0) 2024.08.28
Swift - 백준 1620번  (0) 2024.08.28
Swift - 1260번 DFS와 BFS  (0) 2024.08.27
ytw_developer