작성일 : 2022년 1월 3일

문제 : 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;
}

후기

유형을 더 익혔으면 풀 수 있었을 텐데,, ㅜ