코딩테스트/프로그래머스

프로그래머스 피로도

의현 2025. 4. 24. 16:24

링크 : https://school.programmers.co.kr/learn/courses/30/lessons/87946

문제 풀이

dfs를 이용해 가능한 모든 경우의 수를 구하면서 가장 큰 depth를 구하도록 함

function dungeons_search(depth, k, dungeons, visited) {
    let max_depth = depth;
    for (let i = 0; i < dungeons.length; i++) {
        if (!visited[i] && dungeons[i][0] <= k) {
            visited[i] = true;
            const cal_k = k - dungeons[i][1];
            const current_depth = dungeons_search(depth + 1, cal_k, dungeons, visited);
            max_depth = Math.max(max_depth, current_depth);
            visited[i] = false;
        }
    }
    return max_depth;
}

function solution(k, dungeons) {
    let visited = new Array(dungeons.length).fill(false);
    return dungeons_search(0, k, dungeons, visited);
}

결론

solution내부에 dfs 함수를 정의하여 k, dungeons, visited같은 변수를 전역으로 설정할 경우 굳이 파라미터로 넘길 필요가 없음