프로그래머스/완전탐색
피로도
have a good time
2025. 3. 25. 10:06
import java.util.*;
class Solution {
static boolean visit[];
static int max;
public int solution(int k, int[][] dungeons) {
int answer = -1;
max = Integer.MIN_VALUE;
visit = new boolean[dungeons.length];
// 탐험을 시작하는 함수 호출 (초기 탐험 횟수는 0)
solve(k,dungeons, 0);
answer = max;
return answer;
}
public static void solve(int k, int[][] dungeons, int count ) {
// 최대 탐험 횟수 갱신 (현재까지 탐험한 횟수와 비교하여 최대값을 갱신)
max = Math.max(max,count);
for(int i=0; i<dungeons.length; i++) {
// 아직 방문하지 않은 던전이고, 현재 피로도가 던전의 최소 피로도보다 큰 경우
if(!visit[i] && dungeons[i][0]<=k) {
visit[i] = true;
// 던전 탐험 후 남은 피로도로 재귀 호출
solve(k-dungeons[i][1], dungeons, count+1);
visit[i] = false;
}
}
}
}