자료구조와 알고리즘/개인적인 코딩테스트 관련 풀이
[완전탐색][상태 트리] - 최대 점수구하기(DFS)
얄루몬
2022. 7. 25. 19:47
def DFS(L, s,ts):
global res
if ts > m:
return
if L == n:
if res < s:
res = s
else:
DFS(L+1, s + a[L][0], ts + a[L][1])
DFS(L+1, s, ts)
if __name__ =="__main__":
n, m = map(int,input().split())
res = -2174000000
score = []
for i in range(n):
a, b = map(int,input().split())
score.append([a,b])
a= sorted(score,key=lambda x:x[1])
a.sort(reverse=True)
DFS(0,0,0)
print(res)
- 상태 트리를 사용해서 풀었다.
- 종료 조건
- 해당 노드가 n까지 내려갔을 때 현재 값이 최대 값인지를 확인했고 맞다면 res를 현재까지 더한 s 값으로 바꿔주었다.
- 해당 시간이 초과했다면 더이상 살펴보지 않고 return 시켜준다.