Algorithm/프로그래머스풀이
[알고리즘 문제풀이] 프로그래머스 - 피로도 / JAVA(자바)
계범
2022. 2. 24. 10:12
https://programmers.co.kr/learn/courses/30/lessons/87946
코딩테스트 연습 - 피로도
XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던
programmers.co.kr
/**
1. 백트래킹 풀이
2. dfs로 던전 순서 정하기 (현재 피로도로 돌 수 있는 던전만 경우의 수 계산)
3. dfs를 돌때마다 최대값 계산
**/
import java.util.*;
class Solution {
public int answer = 0;
public boolean[] visited;
public int solution(int k, int[][] dungeons) {
visited = new boolean[dungeons.length];
dfs(0,k,dungeons);
return answer;
}
public void dfs(int stage, int k, int[][] dungeons){
answer = Math.max(answer,stage);
for(int i = 0; i < dungeons.length; i++){
if(visited[i] == false && k >= dungeons[i][0]){
visited[i] = true;
dfs(stage+1,k-dungeons[i][1],dungeons);
visited[i] = false;
}
}
}
}