티스토리 뷰
문제링크 : https://www.acmicpc.net/problem/17845
17845번: 수강 과목
첫줄에 서윤이의 최대 공부시간 N (1 ≤ N ≤ 10,000), 과목 수 K (1 ≤ K ≤ 1,000)이 공백을 사이에 두고 주어진다. 이후 K개의 줄에 중요도 I (1 ≤ I ≤ 100,000), 필요한 공부시간 (1 ≤ T ≤ 10,000)이
www.acmicpc.net
#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
[백준 1106번] 호텔 (C++)
문제링크 : https://www.acmicpc.net/problem/1106 1106번: 호텔 첫째 줄에 C와 형택이가 홍보할 수 있는 도시의 개수 N이 주어진다. C는 1,000보다 작거나 같은 자연수이고, N은 20보다 작거나 같은 자연수이다.
blob-thinking.tistory.com
'백준 > 골드' 카테고리의 다른 글
[백준 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 |