플랫폼 | 번호 | 제목 | 유형 | 난이도 | 언어 |
---|---|---|---|---|---|
프로그래머스 | 87946 | 피로도 | 완전탐색 | Lv.2 | Swift |
던전의 개수가 최대 8로 경우의 수가 많지 않고 특별한 규칙이 없기 때문에 완전탐색으로 할만하다.
DFS로 탐색했으며 탐색하면서 피로도를 계산하여 던전을 탐험할 수 있는지 확인하고 탐험한 최대 던전 수를 구하면 된다.
import Foundation
func solution(_ k:Int, _ dungeons:[[Int]]) -> Int {
var visited = Array(repeating: false, count: dungeons.count)
func dfs(_ k: Int, _ count: Int, _ maxCount: Int) -> Int {
var mc = maxCount
for (i, dungeon) in dungeons.enumerated() {
if !visited[i] && k >= dungeon[0] {
visited[i] = true
mc = dfs(k-dungeon[1], count+1, mc)
visited[i] = false
}
}
return max(mc, count)
}
return dfs(k, 0, 0)
}