문제
https://school.programmers.co.kr/learn/courses/30/lessons/87946?language=java
학습 키워드
- 완전 탐색
풀이 및 코드
- DFS로 탐색하면서 탐색한다.
- 예를 들어 던전이 세 개 인 경우, 1 -> 2 -> 3 / 1 -> 3 -> 2 / 2 -> 1 -> 3 / 2 -> 3 -> 1 / 3 -> 1 -> 2 / 3 -> 2 -> 1 을 모두 찾아본다. 단, 최소 피로도가 부족한 경우에는 해당 던전에 들어가지 않게 해야한다.
import java.util.*;
class Solution {
private static int answer = 0;
public int solution(int k, int[][] dungeons) {
Arrays.sort(dungeons, (a, b) -> {
if (a[1] == b[1]) {
return b[0] - a[0];
}
return a[1] - b[1];
});
boolean[] visited = new boolean[dungeons.length];
dfs(k, dungeons, visited, 0, dungeons.length);
return answer;
}
private static void dfs(int k, int[][] dungeons, boolean[] visited, int count, int remaind) {
if (remaind == 0) {
answer = Math.max(answer, count);
return;
}
for (int r = 0; r < dungeons.length; r++) {
int[] dungeon = dungeons[r];
if (visited[r]) {
continue;
}
visited[r] = true;
if (k < dungeon[0]) {
dfs(k, dungeons, visited, count, remaind - 1);
} else {
dfs(k - dungeon[1], dungeons, visited, count + 1, remaind - 1);
}
visited[r] = false;
}
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
99클럽 코테 스터디 23일차 TIL (42839번: 소수 찾기) (1) | 2024.11.19 |
---|---|
99클럽 코테 스터디 20일차 TIL (42840번: 모의고사) (0) | 2024.11.17 |
[프로그래머스] 도넛과 막대 그래프 - 35번 테스트 케이스 요청 및 추가 (0) | 2024.11.12 |
99클럽 코테 스터디 3일차 TIL (43238 입국심사) (1) | 2024.10.30 |
댓글