[프로그래머스] 피로도 (JS)

hhkim·2023년 9월 3일
0

Algorithm - JavaScript

목록 보기
122/188
post-thumbnail

풀이 과정

  1. 던전 배열과 길이가 같은 visited 배열 생성
  2. dfs 재귀 함수 생성
  3. 던전 배열의 각 요소에 대해 반복
  4. 현재 요소가 방문한 적 없고, 필요 피로도가 현재 피로도보다 낮으면 현재 요소를 방문 표시
    아니면 continue
  5. 다음 요소에 대해 dfs 실행
  6. 매 dfs 실행마다 result를 최댓값으로 갱신

코드

function solution(k, dungeons) {
  const visited = Array(dungeons.length).fill(false);
  let result = 0;
  const dfs = (k, cnt, dungeons, visited) => {
    for (let i = 0; i < dungeons.length; ++i) {
      const [min, use] = dungeons[i];
      if (visited[i] || min > k) continue;
      visited[i] = true;
      dfs(k - use, cnt + 1, dungeons, visited);
      visited[i] = false;
    }
    result = Math.max(result, cnt);
  };
  dfs(k, 0, dungeons, visited);
  return result;
}

🤔

혼자 고민하다 도저히 답이 없어서 사람들의 힌트를 보고 겨우 풀었다.
풀고서도 뭔가 명쾌하지가 않다...

0개의 댓글