12865번 - 평범한 배낭
2024-01-24
1분 분량
C++백준
문제 풀이 시간 : 1시간
문제 풀이
이 문제는 앞에서 블록 함께 쌓기를 풀면서 배웠던 배낭 문제 알고리즘을 사용하면 간단하게 풀 수 있는 문제였다.
최종 코드
c++
#include <iostream>
#include <vector>
using namespace std;
int dp[101][100001] = {0};
int main() {
int n, k, w, v, sum;
cin >> n >> k;
vector<pair<int, int>> vec;
for (int i = 1; i <= n; i++) {
cin >> w >> v;
vec.push_back({w, v});
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= k; j++) {
if (vec[i - 1].first > j) {
dp[i][j] = dp[i - 1][j];
} else {
dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - vec[i - 1].first] + vec[i - 1].second);
}
}
}
cout << dp[n][k];
}함께 읽으면 좋은 글
코딩 테스트2024-05-07
2186번 - 문자판
알파벳 문자가 한칸에 하나씩 적혀있는 NxM크기의 문자판이 있다. 임의의 칸에서 시작하여 상하좌우 K개의 칸까지 이동하며 문자를 모은다. 반드시 한 칸 이상 이동하며, 같은 자리에 머물 수 없다. 같은 칸을 여러 번 방문할 수 있다.
코딩 테스트2024-03-18
11657번 - 타임머신
N개의 도시가 있다. 한 도시에서 출발해 다른 도시에 도착하는 버스 M개가 있다. 각 버스는 A,B,C로 나타낸다. A-시작도시, B-도착도시, C-걸리는 시간 C는 양수가 아닐 수 있다.
코딩 테스트2024-02-20
16234번 - 인구 이동
NxN크기의 땅 한칸마다 나라가 존재한다. 국경선을 공유하는 두 나라의 인구 차이가 L명 이상, R명 이하라면 두 나라는 연합이 된다. 위의 조건에 해당하는 모든 나라가 연합이 되었다면 그 연합은 인구이동을 한다.
코딩 테스트2024-02-14
2096번 - 내려가기
n줄에 0이상 9이하의 숫자가 세개씩 적혀있다. 첫줄에서 가장 마지막줄까지 이동하면서 세가지 숫자 중 하나를 고른다. 마지막 줄에서 얻을 수 있는 최대 점수, 최소 점수를 구해라 이 문제는 dp로 풀 수 있겠다고 생각했다.