Skip to content

Commit

Permalink
[Gold II] Title: 공항, Time: 12 ms, Memory: 3308 KB -BaekjoonHub
Browse files Browse the repository at this point in the history
  • Loading branch information
belowyoon committed Mar 26, 2024
1 parent b80493a commit 8bc9e98
Show file tree
Hide file tree
Showing 2 changed files with 86 additions and 0 deletions.
40 changes: 40 additions & 0 deletions 백준/Gold/10775. 공항/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# [Gold II] 공항 - 10775

[문제 링크](https://www.acmicpc.net/problem/10775)

### 성능 요약

메모리: 3308 KB, 시간: 12 ms

### 분류

자료 구조, 분리 집합, 그리디 알고리즘

### 제출 일자

2024년 3월 27일 03:05:52

### 문제 설명

<p>오늘은 신승원의 생일이다.</p>

<p>박승원은 생일을 맞아 신승원에게 인천국제공항을 선물로 줬다.</p>

<p>공항에는 G개의 게이트가 있으며 각각은 1에서 G까지의 번호를 가지고 있다.</p>

<p>공항에는 P개의 비행기가 순서대로 도착할 예정이며, 당신은 i번째 비행기를 1번부터 g<sub>i</sub> (1 ≤ g<sub>i</sub> ≤ G) 번째 게이트중 하나에 영구적으로 도킹하려 한다. 비행기가 어느 게이트에도 도킹할 수 없다면 공항이 폐쇄되고, 이후 어떤 비행기도 도착할 수 없다.</p>

<p>신승원은 가장 많은 비행기를 공항에 도킹시켜서 박승원을 행복하게 하고 싶어한다. 승원이는 비행기를 최대 몇 대 도킹시킬 수 있는가?</p>

### 입력

<p>첫 번째 줄에는 게이트의 수 G (1 ≤ G ≤ 10<sup>5</sup>)가 주어진다.</p>

<p>두 번째 줄에는 비행기의 수 P (1 ≤ P ≤ 10<sup>5</sup>)가 주어진다.</p>

<p>이후 P개의 줄에 g<sub>i</sub> (1 ≤ g<sub>i</sub> ≤ G) 가 주어진다.</p>

### 출력

<p>승원이가 도킹시킬 수 있는 최대의 비행기 수를 출력한다.</p>

46 changes: 46 additions & 0 deletions 백준/Gold/10775. 공항/공항.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

vector<int> parent;
int p, g;

int Find(int x) {
if (parent[x] == x) return x;
return parent[x] = Find(parent[x]);
}

void Union(int a, int b) {
a = Find(a);
b = Find(b);
if (a < b) parent[b] = a;
else parent[a] = b;
}

int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
//freopen("input.txt", "r", stdin);

cin >> g >> p;
vector<int> arr(p, 0);
for (int i = 0; i < p; i++) {
cin >> arr[i];
}

for (int i = 0; i <= g; i++) {
parent.push_back(i);
}

int cnt = 0;
for (int i = 0; i < p; i++) {
int gate = Find(arr[i]);
if (gate == 0) break;
Union(gate, gate-1);
cnt++;
}
cout << cnt;
return 0;
}

0 comments on commit 8bc9e98

Please sign in to comment.