Skip to content

Commit a452295

Browse files
committed
[Gold V] Title: 평범한 배낭, Time: 44 ms, Memory: 44992 KB -BaekjoonHub
1 parent 31d2344 commit a452295

File tree

2 files changed

+66
-0
lines changed

2 files changed

+66
-0
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# [Gold V] 평범한 배낭 - 12865
2+
3+
[문제 링크](https://www.acmicpc.net/problem/12865)
4+
5+
### 성능 요약
6+
7+
메모리: 44992 KB, 시간: 44 ms
8+
9+
### 분류
10+
11+
다이나믹 프로그래밍, 배낭 문제
12+
13+
### 제출 일자
14+
15+
2025년 4월 7일 09:21:12
16+
17+
### 문제 설명
18+
19+
<p>이 문제는 아주 평범한 배낭에 관한 문제이다.</p>
20+
21+
<p><span style="line-height:1.6em">한 달 후면 국가의 부름을 받게 되는 준서는 여행을 가려고 한다. 세상과의 단절을 슬퍼하며 최대한 즐기기 위한 여행이기 때문에, 가지고 다닐 배낭 또한 최대한 가치 있게 싸려고 한다.</span></p>
22+
23+
<p><span style="line-height:1.6em">준서가 여행에 필요하다고 생각하는 N개의 물건이 있다. 각 물건은 무게 W와 가치 V를 가지는데, 해당 물건을 배낭에 넣어서 가면 준서가 V만큼 즐길 수 있다. 아직 행군을 해본 적이 없는 준서는 최대 K만큼의 무게만을 넣을 수 있는 배낭만 들고 다닐 수 있다. 준서가 최대한 즐거운 여행을 하기 위해 배낭에 넣을 수 있는 물건들의 가치의 최댓값을 알려주자.</span></p>
24+
25+
### 입력
26+
27+
<p>첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000)가 주어진다.</p>
28+
29+
<p>입력으로 주어지는 모든 수는 정수이다.</p>
30+
31+
### 출력
32+
33+
<p>한 줄에 배낭에 넣을 수 있는 물건들의 가치합의 최댓값을 출력한다.</p>
34+
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#include <iostream>
2+
#include <algorithm>
3+
4+
using namespace std;
5+
6+
#define MAX 110
7+
8+
int N, K;
9+
int W[MAX];
10+
int V[MAX];
11+
int DP[MAX][100001];
12+
13+
int main() {
14+
cin >> N >> K;
15+
for (int i = 1; i <= N; i++) {
16+
cin >> W[i] >> V[i];
17+
}
18+
19+
for (int i = 1; i <= N; i++) {
20+
for (int j = 1; j <= K; j++) {
21+
if (j >= W[i]) {
22+
DP[i][j] = max(DP[i - 1][j], DP[i - 1][j - W[i]] + V[i]);
23+
} else {
24+
DP[i][j] = DP[i - 1][j];
25+
}
26+
}
27+
}
28+
29+
cout << DP[N][K];
30+
31+
return 0;
32+
}

0 commit comments

Comments
 (0)