public int solution(int k, int[][] dungeons) {
boolean[] visited = new boolean[dungeons.length];
return dfs(0, k, dungeons, visited);
}
public static int dfs(int depth, int k, int[][] dungeons, boolean[] visited) {
int maxDepth = depth;
for (int i = 0; i < dungeons.length; i++) {
if (!visited[i] && dungeons[i][0] <= k) {
visited[i] = true;
int subDepth = dfs(depth + 1, k - dungeons[i][1], dungeons, visited);
maxDepth = Math.max(maxDepth, subDepth);
visited[i] = false;
}
}
return maxDepth;
}
출처:https://school.programmers.co.kr/learn/courses/30/lessons/87946