본문 바로가기
Algorythms

백준 1092번 c++ 풀이

by 준형코딩 2022. 8. 31.

분류 - 그리디 알고리즘

 

문제

지민이는 항구에서 일한다. 그리고 화물을 배에 실어야 한다. 모든 화물은 박스에 안에 넣어져 있다. 항구에는 크레인이 N대 있고, 1분에 박스를 하나씩 배에 실을 수 있다. 모든 크레인은 동시에 움직인다.

각 크레인은 무게 제한이 있다. 이 무게 제한보다 무거운 박스는 크레인으로 움직일 수 없다. 모든 박스를 배로 옮기는데 드는 시간의 최솟값을 구하는 프로그램을 작성하시오.

입력

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

출력

첫째 줄에 모든 박스를 배로 옮기는데 드는 시간의 최솟값을 출력한다. 만약 모든 박스를 배로 옮길 수 없으면 -1을 출력한다.

예제 입력 1 복사

3
6 8 9
5
2 5 2 4 7

예제 출력 1 복사

2

 

 

1. 크레인 sort , greater

2. 박스 sort , greater

3. 만약 크레인[0] - box[0]이 0보다 작으면 -1을 출력한다 아니면 밑에 부분 실행

4. while문으로 box vector가 empty가 아닐 때 계속 루프가 돌게한다.

5. 크레인의 크기만큼 for문 돌리고 이중 for문으로 박스의 크기만큼 for문을 돌린다

6. 만약 크레인[i]의 값 보다 박스[j]의 값이 작거나 같으면 box 현재를 erase해준다 그리고 break;

7. 이중for문이 끝날 때 마다 ans를 ++ 해 준다. 

8. box의 모든 값이 erase되어서 while문이 종료가 된다

9. ans 를 출력한다.

 

vector로 안하고 arr로 해결하려고 했다가 메모리초과와 out of bound가 떴던 문제

#include <bits/stdc++.h>

using namespace std;

vector<int>crain;
vector<int>box;

int N;
int M;

bool comp(int a,int b){
    return a>b;
}

int main(){
    cin >> N;
    for (int i = 0; i <N ; ++i) {
        int a;
        cin >> a;
        crain.push_back(a);
    }
    cin >> M;

    for (int i = 0; i <M ; ++i) {
        int a;
        cin >> a;
        box.push_back(a);
    }

    std::sort(crain.begin(), crain.end(),comp);
    std::sort(box.begin(), box.end(),comp);

    int ans =0;
    if((crain[0]-box[0])<0){
        cout << -1;
    }else{
        while(!box.empty()){
            for (int i = 0; i <crain.size(); ++i) {
                for (int j = 0; j <box.size(); ++j) {
                    if(crain[i]>=box[j]){
                        //cout << crain[i] << " " << box[j] <<"\n";
                        box.erase(box.begin()+j);
                        break;
                    }
                }
            }
            ans++;
        }
        cout << ans;
    }







}

 

 

 

 

 

 

 

 

 

 

 

'Algorythms' 카테고리의 다른 글

벡즌 19539 사과나무 c++  (0) 2022.08.31
백준 7983 내일할거야 c++  (0) 2022.08.31
백준 1967 C++ 준코  (0) 2022.08.08
백준 10757 자바 풀이  (0) 2022.03.07
백준 2164번 자바 풀이  (0) 2022.03.01