※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 14728번 문제인 벼락치기이다.
문제는 아래 링크를 확인하자.

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

 

14728번: 벼락치기

ChAOS(Chung-ang Algorithm Organization and Study) 회장이 되어 일이 많아진 준석이는 시험기간에도 일 때문에 공부를 하지 못하다가 시험 전 날이 되어버리고 말았다. 다행히도 친절하신 교수님께서 아래와

www.acmicpc.net

전형적인 knapsack DP 문제이다.

 

시간을 나타내는 배열을 만들고, 한 과목씩 보면서 앞선 과목들로 구성된 공부시간 별 최고 점수에 해당 과목을 공부했을 때의 시간을 추가해나가면서 문제를 해결하자.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;

int arr[10001];

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	int N, T; cin >> N >> T;
	int ans = 1;
	arr[0] = 1;
	while (N--) {
		int K, S; cin >> K >> S;
		for (int i = T; i >= K; i--) {
			if (arr[i - K]) {
				arr[i] = max(arr[i], arr[i - K] + S);
				ans = max(ans, arr[i]);
			}
		}
	}

	cout << ans - 1;
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 15729 // C++] 방탈출  (0) 2022.06.26
[BOJ 15726 // C++] 이칙연산  (0) 2022.06.26
[BOJ 11368 // C++] A Serious Reading Problem  (0) 2022.06.26
[BOJ 15725 // C++] 다항함수의 미분  (0) 2022.06.26
[BOJ 15735 // C++] 삼각  (0) 2022.06.26

+ Recent posts