분류 전체보기 202

[알고리즘][Python] 백준 1197 최소 스패닝 트리 문제 풀이

문제 출처 : www.acmicpc.net/problem/1197 1197번: 최소 스패닝 트리 첫째 줄에 정점의 개수 V(1 ≤ V ≤ 10,000)와 간선의 개수 E(1 ≤ E ≤ 100,000)가 주어진다. 다음 E개의 줄에는 각 간선에 대한 정보를 나타내는 세 정수 A, B, C가 주어진다. 이는 A번 정점과 B번 정점이 www.acmicpc.net 문제 해석 : 최소 신장 트리를 구하고 그 비용의 최솟값을 출력하는 문제이다. 문제 풀이 : 크루스컬 알고리즘을 이용하여 풀이할 수 있다. 풀이 코드 def find_parent(parent, x): if parent[x] != x: parent[x] = find_parent(parent, parent[x]) return parent[x] def ma..

[알고리즘][그래프이론] 최소 신장 트리 (MST, Minimum Spanning Tree)

신장 트리란 ? -> 하나의 그래프가 있을 때 모든 노드를 포함하면서 사이클이 생성되지 않는 부분 그래프 -> 즉 모든 노드들을 연결 하면서도 사이클이 생성되지 않는 그래프를 의미한다. -> 이는 다리를 놓으면서 최소한으로 모든 섬들을 연결하는 문제로 생각할 수 있다. : 따라서 최소 신장 트리는 N개의 정점을 (N-1)개의 간선으로 연결하게 된다. MST의 구현 방법 1. Kruskal MST Algorithm - Greedy Method/Algorithm을 이용하여 그래프의 모든 정점을 최소비용으로 연결하는 알고리즘이다. - 각 사이클에서 최소 비용의 간선을 택하는데 사이클을 이루지 않도록 한다. - 간선을 선택하면서 이루어지는 알고리즘이다. - 가장 작은 비용을 가진 간선들만 선택하기 때문에 Gre..

[알고리즘][Python] 백준 1007 벡터 매칭 문제 풀이

문제 출처 : www.acmicpc.net/problem/1007 1007번: 벡터 매칭 평면 상에 N개의 점이 찍혀있고, 그 점을 집합 P라고 하자. 집합 P의 벡터 매칭은 벡터의 집합인데, 모든 벡터는 집합 P의 한 점에서 시작해서, 또 다른 점에서 끝나는 벡터의 집합이다. 또, P에 속 www.acmicpc.net 문제 해석 : N개의 좌표평면 상의 점이 주어졌을 때 N//2개의 벡터를 생성하고 이를 합한 길이의 최솟값을 구하라 문제 풀이 : v1 = (x1-x2, y1-y2)이다. v2 = (x3-x4, y3-y4) 이다. 합벡터 v3 = v1-v2 = ( (x1-x2) - (x3-x4), (y1-y2) - (y3-y4) ) 이다. 즉 임의의 v3 = ( ( x1 + x3 ) - ( x2 + x4..