본문 바로가기
programming/알고리즘

[PG, 자바] 피로도

by s2econd.blue 2022. 9. 6.

전형적인 DFS 문제

더보기
import java.io.*;
import java.util.*;

//DFS 전체 탐색
class Solution {
    static boolean[] isV;
    static int[][] staticD;
    static int Max = 0, dCnt = 0;
    static public void runD(int crntPiro, int cntV){
        
        for(int i = 0; i < dCnt;i++){
            //방문했다면 pass
            if(isV[i])
                continue;
            if(crntPiro >= staticD[i][0]){
                //방문 처리
                isV[i] = true;
                Max = Math.max(Max, cntV+1);
                runD(crntPiro - staticD[i][1], cntV+1);
                //방문 처리 해제
                isV[i] = false;
            }
        }
    }
    
    public int solution(int k, int[][] dungeons) {
        dCnt = dungeons.length;
        // System.out.println(dCnt);
        
        //던전 갯수만큼 체크
        isV = new boolean[dCnt];
        //static변수에 파라미터 매핑
        staticD = dungeons;
        
        //탐색 시작
        runD(k, 0);
        
        return Max;
    }
}

댓글