이 경우에는 순서만 바꾸는 모든 상황을 확인해야 하기 때문에 순열로 판단을 하였다.
순열로 정렬을 하여 numbers를 저장해둔 후 조건에 따라 비교를 하였고 조건에 맞으면 계산을 하며 탐험수를 증가시켰다.
그 후 최대값을 answer로 설정하였다.
import java.io.*;
import java.util.*;
class Solution {
static int y;
static int x;
static boolean selected[];
static int num;
static int answer=0;
static int numbers[][];
public int solution(int k, int[][] dungeons) {
y = dungeons.length;
x = dungeons[0].length;
num = y;
selected = new boolean[y];
numbers = new int[y][2];
permutation(k, 0,dungeons);
return answer;
}
public static void permutation(int k, int index, int[][] dungeons){
if(index == num){
//System.out.println(Arrays.toString(numbers[0]));
int max=0;
for(int i=0;i<y;i++){
//System.out.println(k +" : "+numbers[i][0]);
if(k<numbers[i][0]) continue;
k-=numbers[i][1];
max++;
//System.out.println(max)
}
if(max>answer)
answer=max;
return;
}
for(int i=0;i<y;i++){
if(selected[i]) continue;
numbers[index][0] = dungeons[i][0];
numbers[index][1] = dungeons[i][1];
//System.out.println(numbers[index]);
selected[i] = true;
permutation(k,index+1,dungeons);
selected[i] = false;
}
}
}