알고리즘/백준

[백준 1092] 배 C++

겜도리도리 2021. 12. 11. 12:13
반응형

문제

백준 1092 배 C++

 

1092번: 배

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

www.acmicpc.net

풀이

입력을 받은 뒤, 크레인과 상자를 정렬해주고

크레인과 상자 모두 큰 것 부터 처리한다.

소스 코드

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
#include <algorithm>
using namespace std;
 
int main() {
    int N, M;
    vector<int> crane;
    vector<int> box;
    cin >> N;
    for (int i = 0; i < N; i++) {
        int n;
        cin >> n;
        crane.push_back(n);
    }
    cin >> M;
    for (int i = 0; i < M; i++) {
        int m;
        cin >> m;
        box.push_back(m);
    }
    sort(crane.begin(), crane.end());
    sort(box.begin(), box.end());
    int cnt = 0;
    // 불가능한 경우
    if (crane.back() < box.back()) {
        cout << -1;
        return 0;
    }
    while (!box.empty()) {
        cnt++;
        // 크레인 가장 큰 무게 부터
        for (int i = crane.size() - 1; i >= 0; i--) {
            // 상자 가장 큰 무게 부터
            for (int j = box.size() - 1; j >= 0; j--) {
                // 옮길 수 있으면 삭제하고 다음 크레인으로
                if (crane[i] >= box[j]) {
                    box.erase(box.begin() + j);
                    break;
                }
            }
        }
    }
    cout << cnt;
    return 0;
}
cs
반응형

'알고리즘 > 백준' 카테고리의 다른 글

[백준 1065] 한수 C++  (0) 2022.03.29
[백준 10816] 숫자 카드 2  (0) 2022.02.12
[백준 11058] 크리보드 C++  (0) 2021.12.09
[백준 12904] A와 B C++  (0) 2021.12.07
[백준 17142] 연구소 3 C++  (0) 2021.12.06