answer = -1
def solution(k, dungeons):
global answer
def dfs(n, visited, k, cnt):
global answer
answer = max(answer, cnt)
# for문 끝까지 돌면 알아서 멈추기 때문에 종료조건 필요 없음
# for문을 모두 선회하고, 방문할 수 있는 던전이 더이상 없을 때 재귀 호출은 일어나지 않기 때문에 dfs 함수 실행이 종료 됨
for idx, dungeon in enumerate(dungeons):
if not visited[idx]:
if dungeon[0] <= k:
visited[idx] = True
dfs(n+1, visited, k - dungeon[1], cnt + 1)
visited[idx] = False
visited = [False] * len(dungeons)
dfs(0, visited, k, 0)
return answer
- answer을 solution 함수에서 선언했다면, dfs 함수 안에서는 nonlocal answer로 해주면 solution에서 선언한 answer 사용 가능
- for문이 있어서 종료조건 필요 없음 -> for문 순회 끝나면 알아서 함수 재귀 호출 안하기 때문에