문제링크 : https://www.acmicpc.net/problem/17845
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int MAX = 987654321;
int N, K, result;
int I[1001], T[1001], dp[1001][10001];
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> N >> K;
for(int i=1; i<=K; i++)
{
cin >> I[i] >> T[i]; //중요도, 공부시간
}
for(int i=1; i<=K; i++) //과목
{
for(int j=1; j<=N; j++) //최대 공부시간
{
if(j-T[i]>=0) dp[i][j] = max(dp[i-1][j], dp[i-1][j-T[i]] + I[i]); //배낭문제
else dp[i][j] = dp[i-1][j];
}
}
cout << dp[K][N];
return 0;
}
기본적인 dp 배낭 알고리즘 문제이다.
주어진 공부시간 내에 최대 중요도를 담아주고 이를 출력한다.
참고 링크 : https://blob-thinking.tistory.com/297
'백준 > 골드' 카테고리의 다른 글
[백준 20500번] Ezreal 여눈부터 가네 ㅈㅈ (C++) (0) | 2024.01.15 |
---|---|
[백준 14852번] 타일 채우기 3 (C++) (0) | 2024.01.15 |
[백준 2228번} 구간 나누기 (C++) (0) | 2024.01.12 |
[백준 1766] 문제집 (C++) (0) | 2024.01.07 |
[백준 18513번] 샘터 (C++) (0) | 2024.01.04 |