전형적인 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;
}
}
'programming > 알고리즘' 카테고리의 다른 글
[PG, 자바] 합승택시요금 (0) | 2022.09.20 |
---|---|
[PG, 자바] 등산코스정하기 (0) | 2022.09.20 |
[PG, 자바]추석 트래픽 (0) | 2022.09.06 |
[프로그래머스, 자바] PG_전력망을둘로나누기 (0) | 2022.08.25 |
[백준, 1917, 자바] 정육면체 전개도 (0) | 2022.08.24 |
댓글