피로도

문제


문제 풀이

visited 배열을 통해 방문하지 않은 노드를 방문을 하여 피로도를 차감 시키는 dfs 방식으로 처리 하였다.

완전 검색트리를 활용하여야 하기 때문에 다음 재귀함수를 호출하고 나면 다시 visited를 false 처리를 하면서 다음번에 해당 던전을 체크가 가능하다. 


나의 답안

static boolean[] visited;
static int answer = 0;

public static int solution(int k, int[][] dungeons) {
    visited = new boolean[dungeons.length];
    dfs(0, k, dungeons);
    return answer;
}

private static void dfs(int depth, int k, int[][] dungeons) {
    for (int i = 0; i < dungeons.length; i++) {
        if (dungeons[i][0] > k || visited[i]) {
            continue;
        }

        visited[i] = true;
        dfs(depth + 1, k - dungeons[i][1], dungeons);
        visited[i] = false;
    }
    answer = Math.max(answer, depth);
}

'Programmers 문제풀이 > Lv.2' 카테고리의 다른 글

[3차] n진수 게임  (0) 2023.04.03
할인 행사  (0) 2023.04.03
k진수에서 소수 개수 구하기  (0) 2023.04.03
전화번호 목록  (0) 2023.04.03
타겟 넘버  (0) 2023.04.03