プログラマーLv.2:疲労度

5768 ワード

https://programmers.co.kr/learn/courses/30/lessons/87946
これはソートの問題です.
可能なすべての順序を組み合わせた後、探検コピーの個数が最大になります.
function solution(k, dungeons) {
    var answer = 0;
    let check = Array(dungeons.length).fill(0);
  
    function DFS(L, k) {
        if (k === 0) {
            if (L > answer) answer = L;
        }
        else if (L === dungeons.length) answer = L;
        else {
            for (let i = 0; i < dungeons.length; i++) {
                if (check[i] === 0 && dungeons[i][0] <= k) {
                    check[i] = 1;
                    DFS(L+1, k-dungeons[i][1]);
                    check[i] = 0;
                }
            }
            if (L > answer) answer = L;
        }
    }
  
    DFS(0, k);
    return answer;
}