본문 바로가기
개발/Algorithm

[프로그래머스/87946/level2/고득점kit] 피로도 - DFS, 완전탐색

by 킴과다페인(chae eun kim) 2023. 8. 8.
#DFS - 모든 던전이 서로 연결되어있다 생각하고 dfs로 모든 순서 훑기
result = 0

def dfs(k, dungeons, r, visited):
    global result
    result = max(result, r) #최대 방문 횟수
    
    for i in range(len(dungeons)):
        #아직 방문하지 않았고, 최소 피로도 이상 남았다면 방문
        if not visited[i] and k >= dungeons[i][0]:
            #던전 방문
            visited[i] = True
            dfs(k - dungeons[i][1], dungeons, r + 1, visited)

            #던전 방문이 끝나면 리셋
            visited[i] = False

def solution(k, dungeons):
    visited = [False] * len(dungeons)

    dfs(k, dungeons, 0, visited)
    
    return result