본문 바로가기
Algorithm/dfs

[알고리즘] 최대점수구하기 (DFS-재귀)

by 배준오 2023. 3. 18.
반응형

목적:

DFS 알고리즘의 재귀적 특성을 이해하기 위해서

문제 설명(요약):

N개의 문제에 대한 각 점수와 각 문제를 풀기 위한 시간이 주어졌을 때,

정해진 M시간 내 에서의 최대 점수를 찾는문제

해결전략:

노드를 탐색하며(L++) 주어진 입력(점수,시간)을 쓴다 안쓴다 (sum++ or sum, time ++ or time)

-> 재귀 함수로 구현

재귀함수에 대한 이해:

arr = [[점수,시간],[점수,시간],,,,,,[점수,시간]]
DFS(L+1,sum+arr[L][0],time+arr[L][1]) # 노드를 사용한다 1번
DFS(L+1,sum,time) # 노드를 사용하지 않는다 2번

1번 함수를 호출 했을 때

-> 만약에 시간이 초과되면 return 후 돌아와서 2번함수 호출 (stack 자료구조)

-> 만약에 시간 초과되지 않고 깊이 우선 탐색이 끝나면 최댓값 할당

2번 함수를 호출 했을 때

-> 1번 함수가 시간 초과 났을 때 발동

-> 사용할 수있는 노드를 찾을 때 까지 탐색 찾으면 1번함수로 점수,시간을 증가 탐색 후 최댓값 할당

반응형