[프로그래머스] Lv.2 피로도 (Java)

subbni·2023년 2월 27일
0

프로그래머스

목록 보기
16/23

문제

풀이

  • answer를 전역변수로 선언
  • dfs(k,count,visited,dungeons) 를 돌면서 현재 answer보다 더 많은 던전을 돌았을 경우 그 값으로 answer를 바꾼다.
    -k: 남은 피로도, count:방문한 던전 개수, visited:던전의 방문 여부, dungeons:던전 정보
class Solution {
    static int answer = 0;
    static public int solution(int k, int[][] dungeons) {
        dfs(k,0,new boolean[dungeons.length],dungeons);
        return answer;
    }

    static void dfs(int k, int count, boolean[] visited, int[][] dungeons) {
        if(count>answer) answer = count;

        for(int i=0;i<visited.length;i++) {
            if(!visited[i] && dungeons[i][0]<=k) {
                visited[i]=true;
                dfs(k-dungeons[i][1],count+1,visited,dungeons);
                visited[i]=false;
            }
        }
    }
}

for문에서 visited[i]=true 처리를 하였다가 dfs() 수행 이후 다시 visited[i]=false처리

profile
개발콩나물

0개의 댓글