알고리즘
프로그래머스 피로도 (JAVA)
박카스마시며코딩
2022. 4. 23. 19:10
https://programmers.co.kr/learn/courses/30/lessons/87946
코딩테스트 연습 - 피로도
XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던
programmers.co.kr
저는 순열을 통해 해당 문제를 해결하였습니다.
dungeons의 개수가 8이하여서 순열로 풀어도 8!이므로 1초안에 들어갈 것이라 생각하였습니다.
package Programmers.ETC;
public class 피로도 {
public int solution(int k, int[][] dungeons) {
int answer = -1;
boolean[] used = new boolean[dungeons.length];
answer = dfs(0,k,used,dungeons);
return answer;
}
private static final int NEED_FATIGUE = 0;
private static final int FATIGUE = 1;//fatigue
private int dfs(int depth,int k , boolean[] used,int[][] dungeons){
if(depth == dungeons.length){
return 0;
}
int result = 0;
for(int i = 0 ; i < dungeons.length ; i++){
if(used[i]){
continue;
}
if(k < dungeons[i][NEED_FATIGUE]){
continue;
}
used[i] = true;
result = Math.max(result,dfs(depth+1,k-dungeons[i][FATIGUE],used,dungeons)+1);
used[i] = false;
}
return result;
}
}