Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

csct3434

[level 2] 피로도 - 87946 본문

프로그래머스

[level 2] 피로도 - 87946

csct3434 2024. 2. 29. 03:29

문제 링크

 

프로그래머스

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

programmers.co.kr

import java.util.stream.IntStream;

class Solution {

    private int answer = 0;

    public int solution(int k, int[][] dungeons) {
        int total = dungeons.length;

        boolean[] visited = new boolean[total];
        solve(total, 0, 0, visited, dungeons, k);

        return answer;
    }

    private void solve(int total, int count, int repetition, boolean[] visited, int[][] dungeons, int pirodo) {
        boolean canGoAnywhere = IntStream.range(0, total)
            .anyMatch(i -> !visited[i] && dungeons[i][0] <= pirodo);

        if (total == repetition || !canGoAnywhere) {
            answer = Math.max(answer, count);
            return;
        }

        for (int i = 0; i < total; i++) {
            if (!visited[i] && dungeons[i][0] <= pirodo) {
                visited[i] = true;
                solve(total, count + 1, repetition + 1, visited, dungeons, pirodo - dungeons[i][1]);
                visited[i] = false;
            }
        }
    }
}