본문 바로가기

알고리즘 문제풀이

최대 페이지 수 (백준 16493)

n,m = map(int, input().split())
read = [[0,0]]
for i in range(m):
    read.append(list(map(int, input().split())))

dp =[[0]*(n+1)for _ in range(m+1)]
for i in range(1, m+1):
    for j in range(1,n+1):
        d,p = read[i][0],read[i][1] 
        if j < d : 
            dp[i][j] = dp[i-1][j] 
        else:
            dp[i][j] = max(dp[i-1][j], dp[i-1][j-d]+p)
print(dp[m][n])

https://www.acmicpc.net/problem/16493

 

16493번: 최대 페이지 수

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

www.acmicpc.net

 

  첫 번째 책부터 시작해서 계속 최대의 경우를 택해야 한다. 그래서 2차원의 dp 배열이 필요하다. 

'알고리즘 문제풀이' 카테고리의 다른 글

LCS2(백준 9252)  (0) 2024.01.03
리그 오브 레전설 (Small)(백준 17271)  (0) 2024.01.02
수 고르기 (백준 20186)  (0) 2023.11.09
모두의 마블 (백준 12845)  (1) 2023.11.09
블로그2(백준 20365)  (1) 2023.11.09