Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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
Archives
Today
Total
관리 메뉴

MG

[백준] 1092 - 배 본문

컴퓨터과학/알고리즘_PS

[백준] 1092 - 배

MG# 2022. 4. 28. 18:41

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

 

1092번: 배

첫째 줄에 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 각 크레인의 무게 제한이 주어진다. 이 값은 1,000,000보다 작거나 같다. 셋째 줄에는 박스의 수 M이 주어진다. M은 10,000보

www.acmicpc.net

전형적인 그리디 문제입니다. 크레인과 화물을 모두 벡터에 넣고 이를 내림차순으로 정렬합니다. 그리고 크레인을 앞에서부터 가져갈 수 있는 최대한 무거운 화물을 차례대로 가져가게 합니다. 한 번 사이클 돌 때마다 ans을 1씩 더하면 풀립니다. 그리고 예외로 제일 무거운 짐을 무게 제한이 제일 큰 크레인이 못 가져갈 경우 -1을 출력해줍니다.

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

vector<int> v1, v2;
int n, m, ans;

int main() {

    ios::sync_with_stdio(0);
    cin.tie(0);

    cin >> n;
    for (int i = 0; i < n; i++) {
        int num;
        cin >> num;
        v1.push_back(num);
    }

    cin >> m;
    for (int j = 0; j < m; j++) {
        int num;
        cin >> num;
        v2.push_back(num);
    }

    sort(v1.begin(), v1.end(), greater<>());
    sort(v2.begin(), v2.end(), greater<>());

    if (v1[0] < v2[0]) {
        cout << "-1\n";
        return 0;
    }

    while (true) {
        if (!v2.empty()) {
            for (auto i : v1) {
                auto it = v2.begin();

                for (auto j : v2) {
                    if (i >= j) {
                        v2.erase(it);
                        break;
                    } else it++;
                }
            }
            ans++;
        } else break;
    }

    cout << ans << "\n";
    return 0;
}

'컴퓨터과학 > 알고리즘_PS' 카테고리의 다른 글

[백준] 11727 - 2 x n 타일링 2  (0) 2022.04.30
[백준] 11653 - 소인수분해  (0) 2022.04.28
[백준] 17626 - Four Squares  (0) 2022.04.27
[백준] 16953 - A → B  (0) 2022.04.26
[백준] 11726 - 2 x n 타일링  (0) 2022.04.25