-
피로도프로그래머스/완전탐색 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; } } } }
'프로그래머스 > 완전탐색' 카테고리의 다른 글
전력망을 둘로 나누기 (0) 2025.03.24