알고리즘/백준
boj-14501 퇴사
꿈꾸는 데이터분석가
2021. 9. 23. 14:35
https://www.acmicpc.net/problem/14501
n = int(input())
t=[] #시간,비용
for i in range(n):
m,w=map(int,input().split())
t.append((m,w))
max_value=0
def dfs(idx,value):
global max_value
if idx==n:
if max_value<value:
max_value=value
return
dfs(idx+1,value)
if idx+t[idx][0]<=n :
dfs(idx+t[idx][0],value+t[idx][1])
dfs(0,0)
print(max_value)
문제는 쉬웠는데
최초 풀이에서 틀린 부분 찾는 것과 시간초과 이유를 찾는데 시간이 오래걸렸다.
DFS로 모든 경로를 돌게하는 것이 아닌 DP재귀로 필요한 부분에만 접근하게하는 것이 시간초과의 이유였다.
for문이 필요 없었던 문제였다.