[백준 10775] 공항

Junyoung Park·2022년 3월 11일
0

코딩테스트

목록 보기
232/631
post-thumbnail

1. 문제 설명

공항

2. 문제 분석

Union-Find 함수 중 부모 노드를 찾는 Find 노드를 활용하는 문제였다. 처음에는 순서대로 for 문 루프를 통해 break가 일어나는 순간까지 카운트했는데 시간 초과가 났다.

3. 나의 풀이

import sys

sys.setrecursionlimit(10**6)

g = int(sys.stdin.readline().rstrip())
p = int(sys.stdin.readline().rstrip())
parents = [i for i in range(g+1)]
planes = []
for _ in range(p):
    planes.append(int(sys.stdin.readline().rstrip()))

def find(node):
    if parents[node] == node: return node
    else:
        parents[node] = find(parents[node])
        return parents[node]

cnt = 0
for plane in planes:
    root = find(plane)
    # 최대 도킹 가능한 번호의 루트 노드를 찾는다.
    if root == 0: break
    # 비행기로 모두 꽉 찼을 때 break
    parents[root] -= 1
    # 한 대가 착륙했기 때문에 범위 1씩 줄어든다.
    cnt += 1
print(cnt)

profile
JUST DO IT

0개의 댓글