Algorithm/Programmers Java

Java 프로그래머스 피로도

제우제우 2024. 2. 28. 21:05

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제 분류 : 코딩테스트 연습 > 완전탐색 > 피로도 

난이도 : 2

 

정답 코드 

백트래킹을 활용해서 풀었다.

import java.util.*;
class Solution {
    static int max;
    static int [][] d;
    static boolean [] visited;
    public int solution(int k, int[][] dungeons) {
        max = 0;
        d = dungeons;
        visited = new boolean[dungeons.length];
        BackTracking(k, 0);
        return max;
    }
    public static void BackTracking(int cur, int count){
        boolean flag = true;
        for(int i = 0; i < d.length; i++){
            if(!visited[i] && cur >= d[i][0]){
                flag = false;
                visited[i] = true;
                BackTracking(cur - d[i][1], count + 1);
                visited[i] = false;
            }
        }
        if(flag){
            max = Math.max(max, count);
        }
    }
}