티스토리 뷰

반응형

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

 

10775번: 공항

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

www.acmicpc.net


⊙ 문제

⊙ 입력

⊙ 출력

⊙ 예제 입출력

⊙ 알고리즘 분류

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

 


 

⊙ 문제 접근 과정

 

문제 이해가 너무 안 되었다. 진짜;

 

간단하게 정리하자면 게이트 수 G, 비행기 수 P가 있다.

그리고 G개의 게이트에 비행기가 한 대씩 도킹할 수 있고 꽉 차면 공항 폐쇄.

 

g의 값을 비교하여 채운다. 채운다면 cnt 값을 올려주고 공항 폐쇄 or P만큼 값을 받으면 cnt 값 출력

 


 

⊙ 문제 풀이

 

#include <iostream>

using namespace std;

int G,P,g;
int parent[100001];

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

int main() {
    int cnt=0;

    cin >> G >> P;

    for(int i=1;i<=G;i++)
        parent[i]=i;
    
    for(int i=1;i<=P;i++) {
        cin >>g;
        if(!find(g)) break;
        else{
            cnt++;
            parent[find(g)]=find(find(g)-1);
        }
    }
    cout << cnt;
}

⊙ 결과

 


⊙ 마무리

 

 

NONE

 

좋아요 로그인하지 않아도 누를 수 있습니다!

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
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
글 보관함