🔗 문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/87946
✏️ 풀이
function solution(k, dungeons) {
let maxCount = 0;
const dfs = (fatigue, count, visited) => {
let isEnd = true;
for (let i = 0; i < dungeons.length; i++) {
if (visited[i] || dungeons[i][0] > fatigue) {
continue;
}
isEnd = false;
visited[i] = true;
dfs(fatigue - dungeons[i][1], count + 1, visited);
visited[i] = false;
}
if (isEnd) {
maxCount = Math.max(maxCount, count);
}
};
dfs(k, 0, Array(dungeons.length).fill(false));
return maxCount;
}
DFS를 통해 던전들 중에서 아직 방문하지 않았고, 현재 피로도가 최소 필요 피로도 이상일 때에만 던전을 계속해서 방문해서, 더 이상 던전을 방문할 수 없을 때마다 현재까지 방문한 던전의 개수를 maxCount와 비교하여 갱신하였다.
'연습장 > 프로그래머스 문제풀이' 카테고리의 다른 글
[프로그래머스 Level 2] 이진 변환 반복하기 - JavaScript (0) | 2022.11.14 |
---|---|
[프로그래머스 Level 2] 전력망을 둘로 나누기 - JavaScript (0) | 2022.11.05 |
[프로그래머스 Level 2] 할인 행사 - JavaScript (0) | 2022.11.04 |
[프로그래머스 Level 2] 혼자 놀기의 달인 - JavaScript (0) | 2022.11.04 |
[프로그래머스 Level 2] 연속 부분 수열 합의 개수 - JavaScript (0) | 2022.11.04 |