코딩테스트 연습 - 12주차

XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던

programmers.co.kr

 

 


 

 

  • 풀이

 

처음엔 정렬한 후 풀어보려고했지만 입력값이 까다로워서 정확한 답을 구현할 수 없었습니다.

 

던전의 수가 최대 8개로 많지 않기때문에 완탐을 했습니다.

dfs 방식으로 완전 탐색 했습니다.

 

 

  • 코드

 

import java.util.*;

class Solution {
    static boolean[] check;
    static int answer;
    
    public int solution(int k, int[][] dungeons) {
        check = new boolean[dungeons.length];
        answer = 0;
        
        for(int i = 0; i < dungeons.length; i++){
            if(dungeons[i][0] > k) continue;
            
            check[i] = true;
            dfs(k-dungeons[i][1], dungeons, 1);
            check[i] = false;
        }
        
        return answer;
    }
    
    private static void dfs(int k, int[][] dungeons, int count){
        answer = Math.max(answer, count);
        
       for(int i = 0; i < dungeons.length; i++){
            if(dungeons[i][0] > k || check[i]) continue;
            
            check[i] = true;
            dfs(k-dungeons[i][1], dungeons, count+1);
            check[i] = false;
        }
    }
}

 

+ Recent posts