백준

백준 14728 벼락치기

콩순이냉장고 2023. 12. 11. 23:53

문제 URL  : https://www.acmicpc.net/problem/14728

 

14728번: 벼락치기

ChAOS(Chung-ang Algorithm Organization and Study) 회장이 되어 일이 많아진 준석이는 시험기간에도 일 때문에 공부를 하지 못하다가 시험 전 날이 되어버리고 말았다. 다행히도 친절하신 교수님께서 아래와

www.acmicpc.net

 

문제 접근법:

dfs+ 메모이제이션 문제 입니다.

 

내가 가지고있는 시간으로 풀수있는 문제는

풀거나 혹은 안풀고 다른문제로 넘어가거나 하여 모든 경우의수를 dfs로 풀면됩니다.

 

그리고 메모이제이션을 이용해서 가지치기를 하면

쉽게 풀수있는 문제입니다.

파이썬으로 푼 문제입니다.

소스코드 :

 

import sys
sys.setrecursionlimit(2000000)
input = sys.stdin.readline
n,t = map(int,input().split())
l = [list(map(int,input().split())) for i in range(n)]
dp = [[-1 for j in range(t+1)] for i in range(n)]

def dfs(cur=0,sum=0):
    global l,dp,t
    if cur>=len(l):return 0
    if dp[cur][sum]!=-1: return dp[cur][sum]
    if sum+l[cur][0]<=t:
        dp[cur][sum]=max(dp[cur][sum],dfs(cur+1,sum+l[cur][0])+l[cur][1])
    dp[cur][sum]=max(dp[cur][sum],dfs(cur+1,sum))
    return dp[cur][sum]

print(dfs())

 


궁금한점 혹은 모르는 점 어떤 질문이든 댓글은 언제나 환영입니다.