작성일 : January 3, 2022
문제 : https://programmers.co.kr/learn/courses/30/lessons/87946
해설 : https://velog.io/@duboo/프로그래머스-Level-2-피로도-JS
처음에 dp 문제 인줄 알았는데
dfs로 생각을 다시 했고 30분 동안 구현하지 못하였다
function solution(k, dungeons) {
var answer = -1;
return answer;
}
function solution(k, dungeons) {
const len = dungeons.length;
//모든 경우의 수를 확인하기 위한 배열
const visited = new Array(len).fill(false);
//클리어 횟수를 확인
let clearCnt = 0;
//모든 경우의 수를 확인하기 위한 재귀
const dfs = (k, curCnt) => {
//현재 클리어 횟수와 전의 클리어 횟수를 비교
clearCnt = Math.max(curCnt, clearCnt);
for(let i=0; i<len; i++) {
const [minK, useK] = dungeons[i];
//현재 피로도보다 크고 확인한적이 없다면
if(k >= minK && !visited[i]) {
//확인, 피로도 감소 및 카운트 증가 후 재귀
visited[i] = true;
dfs(k - useK, curCnt + 1);
visited[i] = false;
}
}
}
dfs(k, 0);
return clearCnt;
}
유형을 더 익혔으면 풀 수 있었을 텐데,, ㅜ