[프로그래머스] 피로도 - JavaScript
프로그래머스 Level 2 - 피로도
- 문제 분류 : 위클리 챌린지
- 문제 출처 : 프로그래머스 Level 2 - 피로도
📌 문제 설명


📌 생각한 풀이 방법 (1차 시도 -> 실패)
최소 필요 피로도 - 소모 피로도가 가장 큰 순서 부터 처리하면 된다고 생각함
1. 최소 필요 피로도 - 소모 피로도 내림차순으로 dungeons을 정렬
2. dungeons을 탐색 후, 탐험할 수 없으면 해당 값을 반환함
📌 풀이
function solution(k, dungeons) {
  let answer = 0;
  dungeons = dungeons.sort((a, b) => {
    if (b[0] - b[1] === a[0] - a[1]) return b[0] - a[0];
    return b[0] - b[1] - (a[0] - a[1]);
  });
  for (let i = 0; i < dungeons.length; i++) {
    let current = dungeons[i];
    if (k < current[0]) {
      return answer;
    }
    k -= dungeons[1];
    answer++;
  }
  return answer;
}📌 생각한 풀이 방법 (2차 시도 -> 성공)
- DFS를 활용하여 모든 경우의 조합을 answer에 추가함
- answer의 최대값을 반환함
📌 풀이
function solution(k, dungeons) {
  let answer = [];
  let visited = Array(dungeons.length).fill(false);
  function dfs(count, k) {
    answer.push(count);
    for (let i = 0; i < dungeons.length; i++) {
      let current = dungeons[i];
      if (k >= current[0] && !visited[i]) {
        visited[i] = 1;
        dfs(count + 1, k - current[1]);
        visited[i] = 0;
      }
    }
  }
  dfs(0, k);
  return Math.max(...answer);
}Author And Source
이 문제에 관하여([프로그래머스] 피로도 - JavaScript), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@tnehd1998/프로그래머스-피로도-JavaScript저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)