YeJin's Footsteps

12865번: 평범한 배낭 본문

Computer Science & Engineering/알고리즘

12865번: 평범한 배낭

YeJinii 2022. 1. 27. 23:41

코테공부 빨리해야한다. 발등에 불🔥 떨어졌다!!! 🙊🙊🙊

 

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


풀이 과정 : 

아이패드에 끄적거린 내 풀이 방식


풀이 코드 : 

//평범한 배낭 _ 골드 5

#include <iostream>
#include <algorithm>
#include <cstdio>

#define max_N 101 // define 문 뒤에는 세미콜론을 붙이지 말자 ㅋㅋㅋㅋ

using namespace std;

int weight[max_N];
int value[max_N];
int dp[max_N][101010];

int main(void)
{
    int N, K;
    cin >> N >> K;

    for (int i = 1; i <= N; i++)
    {
        cin >> weight[i] >> value[i];
    }

    for (int i = 1; i <= N; i++)
    {
        for (int j = 1; j <= K; j++)
        {
            if (j >= weight[i])
            { // 넣을 아이템의 무게가 j(베낭에 들어갈수 있는 무게)보다 작거나 같으면
                dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);
            }
            else
            { //아얘 넣을 무게가 아님
                dp[i][j] = dp[i - 1][j];
            }
        }
    }

    //결과값 출력
    cout << dp[N][K];

    return 0;
}

실행 결과 : 

실행 결과 (dp 배열 출력 포함)
실행 결과


채점 결과 : 

 

Comments