Algorithm
[프로그래머스][코딩테스트 고득점 Kit][Javascript] 피로도
밍맹030
2023. 8. 7. 18:10
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/87946
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
function solution(k, dungeons) {
let answer = 0;
// 주어지는 배열(dungeons) 크기와 같은 크기의 배열 선언 및 false로 초기화
const visited = Array.from({ length: dungeons.length }, () => false);
// k : 현재 피로도
// count : 방문한 던전 수
function dfs(k, count){
for(let i=0; i<dungeons.length; i++){
// 방문하지 않은 던전이고
// 현재 피로도(k)가 최소 필요 피로도 이상이면
// 던전 방문 가능
if(visited[i] == false && k >= dungeons[i][0]){
// 방문 표시
visited[i]=true;
// 갱신된 현재 피로도 = 이전피로도 - 소모 피로도
dfs(k-dungeons[i][1], count+1);
// 백트래킹을 위해 방문 여부 초기화
visited[i]=false;
}
}
// dfs 완료 후 방문한 총 던전 수와 현재 answer 중 더 작은 값으로 answer 갱신
answer = Math.max(answer, count);
}
dfs(k ,0);
return answer;
}728x90