본문 바로가기

알고리즘/Lv. 2

프로그래머스 87946 피로도 자바스크립트 풀이

728x90

난이도 : Lv. 2

풀이일 : 2412242

https://school.programmers.co.kr/learn/courses/30/lessons/87946?language=python3

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


문제


풀이 코드

function solution(k, dungeons) {
    let answer = -1
    let visited = new Array(dungeons.length).fill(false)
    
    function DFS(hp, depth) {
        if (answer < depth) {
            answer = depth
        }
        for (let i = 0; i < dungeons.length; i++) {
            if (!visited[i] && hp >= dungeons[i][0]) {
                visited[i] = true
                DFS(hp - dungeons[i][1], depth + 1)
                visited[i] = false
            }
        }
    }
    DFS(k, 0)
    
    return answer
}
  • DFS로 탐색 진행
  • 현재 depth가 answer보다 크다면, answer 재할당
  • 던전목록 길이만큼 반복하며 방문할 수 있는 던전이라면 방문 후 DFS 재귀 호출

제출 결과


느낀점

  • Array로 배열을 선언하지 않아 처음에는 NaN으로 되어 있어서 틀린 답이 나왔다.
  • 프로젝트는 죄다 자바스크립트로 했는데 알고리즘은 또 다른 느낌이다.
  • 그리고 제출 결과 보면 자스는 항상 좀 느린 것 같다.