중요한 포인트는 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 |