Union Find
-
[백준 20040번] 사이클 게임Coding Test/백준 2021. 2. 18. 20:06
# 문제 내 풀이 import sys input = sys.stdin.readline # 특정 원소가 속한 집합을 찾기 (Find 연산) def find_parent(parent, x): # 루트 노드를 찾을 때까지 재귀 호출 if parent[x] != x: parent[x] = find_parent(parent, parent[x]) return parent[x] # 두 원소가 속한 집합을 합치기 (Union 연산) def union_parent(parent, a, b): a = find_parent(parent, a) b = find_parent(parent, b) if a < b: parent[b] = a else: parent[a] = b n, m = map(int, input().split())..
-
[백준 4195번] 친구 네트워크Coding Test/백준 2021. 2. 17. 21:31
# 문제 내 풀이 import sys input = sys.stdin.readline # 원소가 속한 집합의 루트 노드를 찾는 함수 정의 def find_parent(parent, x): if parent[x] != x: parent[x] = find_parent(parent, parent[x]) return parent[x] # 두 원소가 속한 집합을 합치는 함수 정의 def union_parent(parent, cnt, a , b): a = find_parent(parent, a) b = find_parent(parent, b) if a b: parent[a] = b cnt[b] +=..
-
[백준 1976번] 여행 가자Coding Test/백준 2021. 2. 16. 19:15
# 문제 내 풀이 import sys input = sys.stdin.readline # 주어진 정보 입력 받기 n = int(input()) m = int(input()) graph = [list(map(int, input().split())) for _ in range(n)] # 그래프 연결 상태 입력 받기 plan = list(map(int, input().split())) # 여행 계획 입력 받기 # 부모 테이블 생성 및 초기화 parent = [i for i in range(n + 1)] # 특정 원소가 속한 집합을 찾아주는 Find 연산 정의 def find_parent(parent, x): if parent[x] != x: parent[x] = find_parent(parent, parent..
-
[백준 1717번] 집합의 표현Coding Test/백준 2021. 2. 15. 16:34
# 문제 내 풀이 import sys input = sys.stdin.readline limit_number = 100000 sys.setrecursionlimit(limit_number) # 재귀 제한을 여유 있게 해제 # 특정 원소가 속한 집합을 찾기 (Find 연산) def find_parent(parent, x): # 루트 노드를 찾을 때까지 재귀적으로 호출 if parent[x] != x: parent[x] = find_parent(parent, parent[x]) return parent[x] # 두 원소가 속한 집합을 합치기 (Union 연산) def union_parent(parent, a, b): a = find_parent(parent, a) b = find_parent(parent, ..
-
[알고리즘] 기타 그래프 이론 - 서로소 집합 (Disjoint Sets)Computer Science/자료구조 & 알고리즘 2021. 2. 14. 18:45
# 서로소 집합 (Disjoint Sets) 서로소 집합이란 공통 원소가 없는 두 집합을 의미한다. 예를 들어, {1, 2}, {3, 4}는 서로소 관계이지만, {1, 2}, {2, 3}은 2라는 공통된 원소가 존재하므로 서로소 관계가 아니다. # 서로소 집합 자료구조 (Union Find 자료구조) 서로소 집합 자료구조(Union Find 자료구조)는 서로소 부분 집합들로 나누어진 원소들의 데이터를 처리하기 위한 자료구조이다. 서로소 집합 자료구조에는 두 가지 연산이 존재하는데, 두 개의 원소가 포함된 집합을 하나의 집합으로 합치는 합집합(Union) 연산과 특정한 원소가 속한 집합이 어떤 집합인지 알려주는 찾기(Find) 연산이 그것이다. # 서로소 집합 자료구조의 동작 과정 1. 기본 동작 과정 (..