백준

백준 16493 최대 페이지 수

콩순이냉장고 2023. 12. 13. 23:42

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

 

16493번: 최대 페이지 수

첫째 줄에 N(1 ≤ N ≤ 200)과 챕터의 수 M(1 ≤ M ≤ 20)이 주어진다. 둘째 줄부터 각 챕터 당 읽는데 소요되는 일 수와 페이지 수가 주어진다. 소요되는 일 수는 20보다 작거나 같은 자연수이고, 페이

www.acmicpc.net

문제 접근법 : 

할수 요소일 수에서 가장 많은 페이지를 보는게 이득입니다.

 

m 이20이라 재귀로 전수조사해도 2^20이라 100만 으로 충분히가능하고

재귀 + 메모이제이션 은 더빠르게 가능하고

 

어차피 배낭문제로 반복문으로 해결하는게 가장 빠르게 가능합니다.

 

소스코드 : 

import sys
input = sys.stdin.readline
n,m = map(int,input().rstrip().split())
l = [list(map(int,input().rstrip().rsplit())) for i in range(m)]
dp = [0]*(n+1)
for i in range(m):
    for j in range(n,-1,-1):
        if j-l[i][0]>=0:
            dp[j]=max(dp[j],dp[j-l[i][0]]+l[i][1])
print(dp[n])

 

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