์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ์ค๋ช
- 14942
- ๋ฑ์ฐ์ฝ์ค ์ ํ๊ธฐ
- ์นด์นด์ค
- ์ธํผ
- ๋ฐฑ์ค
- 142085
- 10๊ธฐ
- 24955
- ํด๊ฒฐ
- PCCP
- ์นด์นด์ค์ฝ๋ ๋ณธ์
- SQL
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- ํ๋ก๊ทธ๋๋จธ์ค
- ๋ฐฐ์ด ๋๋ฆฌ๊ธฐ 5
- ์ธํด์ญ
- SSAFY
- ํต์ฌ
- ์ ๊ธฐ ์ฝ๋ฉ ์ธ์ฆํ๊ฐ
- ์ค๋ธ์
- ํผ์ฆ ์กฐ๊ฐ ์ฑ์ฐ๊ธฐ
- ์ํํฐ์ด
- ์ซ์ ์ด์ด ๋ถ์ด๊ธฐ
- ์ฐ ๋ชจ์ ํ์ผ๋ง
- java
- MySQL
- ์๋ฃ
- ํ๊ธฐ
- softeer
- Today
- Total
๊ฐ๋ฐ ์ฅฌ์ค
[ํ๋ก๊ทธ๋๋จธ์ค/Java] 42861 ์ฌ ์ฐ๊ฒฐํ๊ธฐ ๋ณธ๋ฌธ
๐ ๋ฌธ์ ๋งํฌ: https://school.programmers.co.kr/learn/courses/30/lessons/42861
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๐ ํด๊ฒฐ ๊ณผ์
ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ์ ํ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์์ต๋๋ค. ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ์ ๋ํ ์ค๋ช ๋ด์ฉ์ ๋ค์ ๋งํฌ์ ์์ต๋๋ค.
https://devjuice.tistory.com/41
[ํต์ฌ์ ๋ฆฌ] ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ
ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ์ ๋ํด์ ํต์ฌ๋ง ๋ด์๋ณด์์ต๋๋ค.์๊ฐ๋ณต์ก๋: O(ElogE) (E: ๊ทธ๋ํ์ ๊ฐ์ ์ ๊ฐ์) ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ์ ์๊ธฐ ์ ์ ๋จผ์ ๋ค์ ๊ฐ๋ ์ ์์์ผ ํฉ๋๋ค. ๐ ์ ์ฅ ํธ๋ฆฌ๋?ํ๋์
devjuice.tistory.com
์ด๋ฅผ ํ์ฉํจ์ผ๋ก์จ ์๊ฐ๋ณต์ก๋๋ฅผ O(ElogE) (E: costs ๋ฐฐ์ด์ ๊ธธ์ด)๋ก ์ค๊ณํ ์ ์์ต๋๋ค.
โ๏ธ ์ฝ๋
import java.util.*;
class Solution {
private int[] parent;
public int solution(int n, int[][] costs) {
int answer = 0;
parent = new int[n];
for (int i = 0; i < n; ++i) {
parent[i] = i;
}
Arrays.sort(costs, Comparator.comparingInt((int[] o) -> o[2]));
for (int[] cost : costs) {
if (findParent(cost[0]) == findParent(cost[1])) {
continue;
}
answer += cost[2];
unionParent(cost[0], cost[1]);
}
return answer;
}
public int findParent(int a) {
if (parent[a] == a) {
return parent[a] = a;
}
return parent[a] = findParent(parent[a]);
}
public void unionParent(int a, int b) {
a = findParent(a);
b = findParent(b);
if (a < b) {
parent[b] = a;
} else {
parent[a] = b;
}
}
}