728x90
https://school.programmers.co.kr/learn/courses/30/lessons/87946
풀이
- 완전 탐색 DFS
코드
class Solution {
static boolean[] visited;
static int max = 0;
void dfs(int k, int[][] dungeons, int cnt) {
// 모든 케이스 순회
for (int i = 0; i < dungeons.length; i++) {
int a = dungeons[i][0];
int b = dungeons[i][1];
// 기존에 방분 확인, 최소 피로도 확인
if (visited[i] || k < a) {
continue;
}
// 방문
visited[i] = true;
dfs(k - b, dungeons, cnt + 1);
// 다른 케이스를 위해 방문 취소
visited[i] = false;
}
max = Math.max(max, cnt);
}
public int solution(int k, int[][] dungeons) {
visited = new boolean[dungeons.length];
dfs(k, dungeons, 0);
return max;
}
}
728x90
'알고리즘 풀이' 카테고리의 다른 글
[프로그래머스] 더 맵게 자바(Java) (0) | 2023.04.11 |
---|---|
[프로그래머스] 땅따먹기 자바(Java) (0) | 2023.04.08 |
[프로그래머스] 연속 부분 수열 합의 개수 자바(Java) (0) | 2023.04.05 |
[프로그래머스] n^2 배열 자르기 자바(Java) (0) | 2023.04.04 |
[프로그래머스] 위장 자바(Java) (0) | 2023.04.03 |
댓글