[프로그래머스] 피로도 - JavaScript

최정윤·2022년 7월 7일
0
post-thumbnail

💻출처 : 프로그래머스 > 코딩 테스트 > 위클리 챌린지
🏆난이도 : Level 2

📜문제

요약

게임에는 여러 던전이 있다.
던전을 플레이하기 위해서는, 플레이어의 피로도가 던전에 할당된 최소 피로도 이상이어야 한다.
플레이어가 던전을 플레이한 이후, 플레이어의 피로도는 던전의 소모 피로도만큼 감소한다.
사용자가 탐험할 수 있는 던전의 최대 개수를 출력하라.


🔑 풀이

사용자가 어떤 순서로 던전을 탐험하느냐에 따라 탐험할 수 있는 최대 던전의 수가 달라진다.
예시를 살펴보았을 때, 던전의 최소 피로도소모 피로도에 따른 탐색 순서에는 특별한 규칙이 없어보인다.
따라서, 가능한 던전의 모든 배열 순서(순열)를 탐색하여 사용자가 탐험할 수 있는 최대 던전의 수를 구하였다.

던전들의 모든 배열 순서는 DFS를 응용하여 구현하였다.


💻 코드

function solution(k, dungeons) {
    let max=0;
    const visited = Array(dungeons.length).fill(false)
    
    function dfs(count,k){
        max = max < count ? count : max;
        for(let i=0;i < dungeons.length;i++){
            if(visited[i])
                continue;
            
            let curDungeon= dungeons[i]
            if(curDungeon[0]<=k){
                visited[i]=true;
                dfs(count+1, k-curDungeon[1])
                visited[i]=false;
            }
        }
        
    }
    
    dfs(0,k)
    return max;
}

🎤 느낀 점

간단한 코드지만 오랜만에 DFS를 구현하였더니 좀 막막한 구석이 있었다.
문제를 꾸준히 풀어 이런 낯섦을 빨리 없애야 겠다😥

profile
매일 뿌듯하기🍬🍭🍡🍫

0개의 댓글