본문 바로가기
Algorithm/프로그래머스풀이

[알고리즘 문제풀이] 프로그래머스 - 피로도 / JAVA(자바)

by 계범 2022. 2. 24.

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

 

코딩테스트 연습 - 피로도

XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던

programmers.co.kr

/**
    1. 백트래킹 풀이
    
    2. dfs로 던전 순서 정하기 (현재 피로도로 돌 수 있는 던전만 경우의 수 계산)
    
    3. dfs를 돌때마다 최대값 계산
**/

import java.util.*;

class Solution {
    
    public int answer = 0;
    public boolean[] visited;
    
    public int solution(int k, int[][] dungeons) {
        visited = new boolean[dungeons.length];
        
        dfs(0,k,dungeons);
        
        return answer;
    }
    
    public void dfs(int stage, int k, int[][] dungeons){
        
        answer = Math.max(answer,stage);
        
        for(int i = 0; i < dungeons.length; i++){
            if(visited[i] == false && k >= dungeons[i][0]){
                visited[i] = true;
                dfs(stage+1,k-dungeons[i][1],dungeons);
                visited[i] = false;
            }
        }
    }
    
}

댓글