1️⃣ 문제

문제 - 피로도

2️⃣ 풀이 방법 및 코드

던전을 갈 수 있는 루트의 모든 조합을 구하고, k 피로도를 만족하는 루트인지 확인하면서 완전탐색하는 방법!

import Foundation

func search(_ n: Int) -> [[Int]] {
    var result = [[Int]]()
    
    func combination(_ arr: [Int]) {
        if arr.count == n {
            result.append(arr)
            return
        }
        else {
            for i in 0..<n {
                if !arr.contains(i) {
                    combination(arr + [i])
                }
            }
        }
    }
    combination([])
    return result
}

func solution(_ k:Int, _ dungeons:[[Int]]) -> Int {
    var answer = 0
    let combination = search(dungeons.count)
    
    combination.forEach {
        var k = k, count = 0
        
        for i in $0 {
            guard k >= dungeons[i][0] else { break }
            
            k -= dungeons[i][1]
            count += 1
        }
        
        answer = max(answer, count)
    }
    
    return answer
}