코딩테스트 연습 - 12주차
XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던
programmers.co.kr
- 풀이
처음엔 정렬한 후 풀어보려고했지만 입력값이 까다로워서 정확한 답을 구현할 수 없었습니다.
던전의 수가 최대 8개로 많지 않기때문에 완탐을 했습니다.
dfs 방식으로 완전 탐색 했습니다.
- 코드
import java.util.*;
class Solution {
static boolean[] check;
static int answer;
public int solution(int k, int[][] dungeons) {
check = new boolean[dungeons.length];
answer = 0;
for(int i = 0; i < dungeons.length; i++){
if(dungeons[i][0] > k) continue;
check[i] = true;
dfs(k-dungeons[i][1], dungeons, 1);
check[i] = false;
}
return answer;
}
private static void dfs(int k, int[][] dungeons, int count){
answer = Math.max(answer, count);
for(int i = 0; i < dungeons.length; i++){
if(dungeons[i][0] > k || check[i]) continue;
check[i] = true;
dfs(k-dungeons[i][1], dungeons, count+1);
check[i] = false;
}
}
}
'algorithm' 카테고리의 다른 글
[BOJ/JAVA] 백준 1238번 : 파티 (0) | 2021.10.27 |
---|---|
[BOJ/JAVA] 백준 5427번 : 불 (0) | 2021.10.26 |
[BOJ/JAVA] 백준 1167번 : 트리의 지름 (0) | 2021.10.25 |
[BOJ/JAVA] 백준 1939번 : 중량제한 (0) | 2021.10.23 |
[BOJ/JAVA] 백준 6064번 : 카잉 달력 (0) | 2021.10.23 |