ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 피로도
    프로그래머스/완전탐색 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

    댓글

Designed by Tistory.