answer
를 전역변수로 선언dfs(k,count,visited,dungeons)
를 돌면서 현재 answer보다 더 많은 던전을 돌았을 경우 그 값으로 answer를 바꾼다.class Solution {
static int answer = 0;
static public int solution(int k, int[][] dungeons) {
dfs(k,0,new boolean[dungeons.length],dungeons);
return answer;
}
static void dfs(int k, int count, boolean[] visited, int[][] dungeons) {
if(count>answer) answer = count;
for(int i=0;i<visited.length;i++) {
if(!visited[i] && dungeons[i][0]<=k) {
visited[i]=true;
dfs(k-dungeons[i][1],count+1,visited,dungeons);
visited[i]=false;
}
}
}
}
for문에서 visited[i]=true 처리를 하였다가 dfs() 수행 이후 다시 visited[i]=false처리