[문제 풀이]
완전 탐색을 이용하여 문제를 풀었습니다.
피로도 문제는 주어진 던전을 어떤 순서로 도는 것이 가장 많은 던전을 도는지를 찾는 문제였습니다. 이를 구하기 위해 던전을 갈 수 있는 모든 경우의 수를 찾아 주었고, 그 중 던전의 수가 가장 많은 것을 찾아 주었습니다.
구현 방법은 아래와 같습니다.
- 던전의 갯수 만큼 visited 배열을 생성해 줍니다.
- 던전의 첫번째 순서를 정해주며 DFS를 시작합니다.
- DFS는 아직 방문하지 않은 던전이면서 현재 가진 피로도 K가 던전 필요 피로도 보다 높을 경우 count를 1 높여줍니다.
[JAVA]
class Solution {
int max = 0;
boolean visited[];
public int solution(int k, int[][] dungeons) {
int answer = -1;
visited = new boolean[dungeons.length];
for(int i = 0; i < dungeons.length; i++){
visited[i] = true;
if(dungeons[i][0] <= k){
max = max < 1 ? 1 : max;
DFS(k - dungeons[i][1], 1, dungeons);
}
visited[i] = false;
}
return max;
}
public void DFS(int k, int count, int[][] map){
if(max < count)
max = count;
for(int i = 0; i < map.length; i++){
if(visited[i] == false && k >= map[i][0]){
visited[i] = true;
DFS(k - map[i][1], count + 1, map);
visited[i] = false;
}
}
}
}
'algorithm > 프로그래머스' 카테고리의 다른 글
프로그래머스_이중우선순위큐(JAVA) (0) | 2022.11.21 |
---|---|
프로그래머스_모음사전(JAVA) (0) | 2022.11.18 |
프로그래머스_H-Index(JAVA) (0) | 2022.11.17 |
프로그래머스_K번째수(JAVA) (0) | 2022.11.17 |
프로그래머스_디스크 컨트롤러(JAVA) (0) | 2022.11.17 |