분류 전체보기
-
[백준 1774번] 우주신과의 교감Coding Test/백준 2021. 2. 23. 18:51
# 문제 내 풀이 from itertools import combinations 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, inp..
-
[백준 4386번] 별자리 만들기Coding Test/백준 2021. 2. 22. 03:19
# 문제 내 풀이 from itertools import combinations 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 = int(input()) lo..
-
[백준 1197번] 최소 스패닝 트리Coding Test/백준 2021. 2. 21. 03:35
# 문제 내 풀이 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 # 노드의 개수와 간선(Union 연산)의 개수 입력 받기 v, e = map(int, input..
-
[백준 9372번] 상근이의 여행Coding Test/백준 2021. 2. 20. 21:49
# 문제 내 풀이 1 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, a, b): a = find_parent(parent, a) b = find_parent(parent, b) if a < b: parent[b] = a else: parent[a] = b t = int(input()) for _ in range(t): n, m = map(int, input().split()..
-
[알고리즘] 기타 그래프 이론 - 최소 신장 트리 (MST, Minimum Spanning Tree)Computer Science/자료구조 & 알고리즘 2021. 2. 20. 00:03
# 신장 트리(Spanning Tree)란? 신장 트리(Spanning Tree)란 원본 그래프의 모든 노드를 포함하면서 사이클이 존재하지 않는 부분 그래프를 뜻한다. 위의 가운데 그림처럼 간선들이 모든 노드를 잇고 있지만, 사이클은 생기지 않는 부분 그래프가 신장 트리의 예시가 된다. 반면, 오른쪽 그림처럼 모든 노드를 잇지도 않고 사이클마저 생기는 것은 신장 트리에 해당되지 않는다. 이 개념을 트리라고 부르는 이유는 모든 노드가 포함되어 서로 연결되면서 사이클이 존재하지 않는다는 조건이 트리의 조건에 해당하기 때문이다. 이러한 트리의 특성으로 인해, 신장 트리가 가지는 총 간선의 개수는 노드의 개수 - 1이 된다. # 최소 신장 트리(MST, Minimum Spanning Tree) 최소 신장 트리(..
-
[백준 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..