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;
}
}
'알고리즘' 카테고리의 다른 글
백준 15565번 귀여운 라이언 (JAVA) (0) | 2022.04.25 |
---|---|
백준 21924번 도시 건설 (JAVA) (0) | 2022.04.24 |
백준 추월 (JAVA) (0) | 2022.04.22 |
프로그래머스 미로 탈출 (JAVA) (0) | 2022.04.21 |
백준 1446번 지름길 (JAVA) (0) | 2022.04.20 |