반응형
🔺 문제
코드트리 | 코딩테스트 준비를 위한 알고리즘 정석
국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.
www.codetree.ai
🔺 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
import java.util.*;
import java.io.*;
public class Main {
static int[] parent = {0,1,2,3,4,5,6,7};
static PriorityQueue<Node> pq;
public static void main(String[] args) throws IOException {
pq = new PriorityQueue<>();
pq.add(new Node(1, 2, 19));
pq.add(new Node(1, 3, 13));
pq.add(new Node(1, 5, 14));
pq.add(new Node(1, 4, 30));
pq.add(new Node(1, 7, 54));
pq.add(new Node(2, 3, 12));
pq.add(new Node(2, 6, 29));
pq.add(new Node(3, 5, 23));
pq.add(new Node(3, 6, 17));
pq.add(new Node(4, 7, 28));
pq.add(new Node(5, 7, 76));
pq.add(new Node(6, 7, 49));
// MST 수행
int useEdge = 0;
int result = 0;
while(useEdge < 6) {
Node now = pq.poll();
if(find(now.s) != find(now.e)) { // 간선 이룬 두 노드가 다른 경우에만
union(now.s, now.e); // 둘이 같은 노드 갖도록 함
result += now.v;
useEdge++;
}
}
System.out.println(result);
}
// 유니온 파인드
static void union(int a, int b) {
a = find(a);
b = find(b);
if(a != b) parent[b] = a;
}
static int find(int a) {
if(a == parent[a]) return a;
return parent[a] = find(parent[a]); // 경로 압축
}
}
class Node implements Comparable<Node> {
int s, e, v;
public Node(int s, int e, int v) {
this.s = s; this.e = e; this.v = v;
}
// 가중치 오름차순 정렬
@Override
public int compareTo(Node node) {
return this.v - node.v;
}
}
|
cs |
💬 느낀 점
크루스칼 오랜만에 보니 다 잊음.... 복습하자 복습
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V |
(참고)
최소 신장 트리 (MST)
📍 정의 및 특징 모든 정점들을 연결하는 부분 그래프 중에서 그 가중치의 합이 최소인 트리 - 사이클 X - 에지 중심! - 노드가 N개일 때, MST를 구성하는 에지 개수는 항상 N-1개 - 대표 : 크루스칼(
bono039.tistory.com
반응형
'코테 > 코드트리' 카테고리의 다른 글
[코드트리/INTERMEDIATE LOW] Date to Date (JAVA) (0) | 2023.09.28 |
---|---|
[코드트리/INTERMEDIATE LOW] 최고의 33위치 (JAVA) (0) | 2023.09.27 |
[코드트리/NOVICE HIGH] 중앙교통통제소 (JAVA) (0) | 2023.09.22 |
[코드트리/NOVICE HIGH] 네비게이션 (JAVA) (0) | 2023.09.22 |
[코드트리/NOVICE HIGH] 쪼개어 배낭 채우기 2 (JAVA) (0) | 2023.09.20 |