코딩테스트/C++

[ 백준 BOJ ] 10775 번 - 공항 (C++)

최-코드 2024. 3. 25. 11:26

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

 

10775번: 공항

예제 1 : [2][?][?][1] 형태로 도킹시킬 수 있다. 3번째 비행기는 도킹시킬 수 없다. 예제 2 : [1][2][3][?] 형태로 도킹 시킬 수 있고, 4번째 비행기는 절대 도킹 시킬 수 없어서 이후 추가적인 도킹은 불

www.acmicpc.net

gi가 주어졌을 때 그리디 방식으로, 공항에 남아있는 게이트 중에 가장 큰 수에 비행기를 할당하면 된다. 공항에 남아있는 게이트의 번호를 찾을 때는 upper_bound()를 사용하거나 이진 탐색으로 찾으면 된다.

#include <iostream>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <memory.h>
#include <vector>
#include <queue>

#define endl '\n'
#define ll long long
#define pii pair<int, int>

using namespace std;

vector<int> store;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    int G,P;
    cin>>G>>P;
    for(int i = 1; i<=G; i++){
        store.push_back(i);
    }
    int g;
    int ans=0;
    for(int i=1; i<=P; i++){
        cin>>g;
        int position = upper_bound(store.begin(), store.end(), g)-store.begin()-1;
        if(position<0)
            break;
        ans++;
        store.erase(store.begin()+position);
    }
    cout<<ans<<endl;
    return 0;
}