티스토리 뷰

728x90

문제 링크

www.acmicpc.net/problem/7579

 

7579번: 앱

입력은 3줄로 이루어져 있다. 첫 줄에는 정수 N과 M이 공백문자로 구분되어 주어지며, 둘째 줄과 셋째 줄에는 각각 N개의 정수가 공백문자로 구분되어 주어진다. 둘째 줄의 N개의 정수는 현재 활

www.acmicpc.net

 

풀이

각 앱별로 사용 중인 메모리 $m$, 비활성화 했을 경우 비용 $c$가 주어집니다.

일반적으로 생각했을 땐 메모리의 모든 범위에 대해 최소 비용을 구하는 배낭 dp인데, 메모리의 범위가 너무 커 배열로 잡을 수 없습니다.

 

관점을 좀 달리하여 모든 비용에 대해 확보할 수 있는 최대의 메모리를 구해줍시다. 비용의 범위는 최대 100이므로 충분히 가능합니다.

그 후 비용 0부터 올라가며 우리가 필요한 메모리 $M$바이트를 확보할 수 있는지 체크해주면 됩니다.

 

 

정답 코드

#include <bits/stdc++.h>

#define INF 0x3f3f3f3f
using namespace std;
using ll = long long;


int n, m;
int p[111], d[11'111];

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

    cin >> n >> m;
    for (int i = 1; i < n + 1; i++) {
        cin >> p[i];
    }
    for (int i = 1; i < n + 1; i++) {
        int c;
        cin >> c;
        for (int j = 10'000; j >= c; j--) {
            d[j] = max(d[j], d[j - c] + p[i]);
        }
    }

    for (int i = 0; i <= 10'000; i++) {
        if (d[i] >= m) {
            cout << i;
            break;
        }
    }
}
728x90

'알고리즘 > 문제 풀이' 카테고리의 다른 글

[BOJ] 백준 9466 텀 프로젝트  (2) 2021.03.08
[BOJ] 백준 9328 열쇠  (0) 2021.03.08
[BOJ] 백준 7453 합이 0인 네 정수  (0) 2021.03.08
[BOJ] 백준 2887 행성 터널  (0) 2021.03.08
[BOJ] 백준 2623 음악프로그램  (0) 2021.03.08
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함