문제 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])
궁금한점 혹은 모르는점 어떤질문이든 댓글은 언제나 환영입니다.
'백준' 카테고리의 다른 글
백준 1943 동전분배 (0) | 2023.12.14 |
---|---|
백준 18427 함께 블록 쌓기 (0) | 2023.12.13 |
백준 17845 수강 과목 (0) | 2023.12.12 |
백준 20303 할로윈의 양아치 (0) | 2023.12.12 |
백준 14728 벼락치기 (0) | 2023.12.11 |