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
parents[root] -= 1
cnt += 1
print(cnt)