while(1) work();
반응형

링크

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWBJAVpqrzQDFAWr 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

분류

동적 계획법(DP)

 

개인적 난이도

 

매우 쉬움 쉬움 보통 어려움 매우 어려움

 

핵심 알고리즘

동적 계획법을 이용하면 되는 너무나도 유명한 문제이다.

더불어, 백준 12865번과 동일한 문제이다.

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

 

12865번: 평범한 배낭

첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000)

www.acmicpc.net

 

시행착오

없음

 

코드

#include<iostream>

using namespace std;

int cache[101][1001];

int xxx(int a, int b){
	return a > b ? a : b;
}

int v(int x, int y){
	if (x < -1 || y < 0) return -2100000000;
	if (x == -1) return 0;

	return cache[x][y];
}

int main(int argc, char** argv){
    int tc, T;
    scanf("%d", &T);

    for (tc = 1; tc <= T; ++tc)
    {
		int N, V;
		scanf("%d %d", &N, &V);

		for (int i = 0; i < N; i++){
			int vi, ci;
			scanf("%d %d", &vi, &ci);

			for (int j = 1; j <= V; j++){
				cache[i][j] = xxx(v(i - 1, j), v(i - 1, j - vi) + ci);
			}
		}

		printf("#%d %d\n", tc, cache[N - 1][V]);
    }

    return 0;
}
반응형

'알고리즘 > SW Expert Academy' 카테고리의 다른 글

9999. 광고 시간 정하기  (0) 2022.02.16
7701. 염라대왕의 이름 정렬  (0) 2022.02.16
3304. 최장 공통 부분 수열  (0) 2022.02.16
1244. 최대 상금  (0) 2022.02.16
4408. 자기 방으로 돌아가기  (0) 2022.02.16
profile

while(1) work();

@유호건

❤️댓글은 언제나 힘이 됩니다❤️ 궁금한 점이나 잘못된 내용이 있다면 댓글로 남겨주세요.

검색 태그