๐พ ์๊ณ ๋ฆฌ์ฆ
- ์ต์๊ฐ์ ๋น์ฉ์ ๊ตฌํ๋ ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ
- ํ๋ฆผ์๊ณ ๋ฆฌ์ฆ์ผ๋ก๋ ๊ตฌํ ๊ฐ๋ฅ (๋น์ฐ)
๐พ ์๊ฐ ํฌ์ธํธ
- int ํ์ ๋์ด๊ฐ๋ ๊ฐ์ด ๋ฐ์ํ๋ฏ๋ก ๊ณ ๋ คํด์ ๊ตฌํํ ๊ฒ.
- ์ ์๋์ ๊ฐ์ ์กฐ๊ฑด์ ๋ฃ์ด์ ๋ฌธ์ ๋ฅผ ๊ตฌํํ๋ ค ํ์ ๋๋ ๋ต์ ๋์ค๋๋ฐ, 97%์์ ์ค๋ฅ๋๋์ง ์๋ฌธ (ํด๊ฒฐ์ค .. 2023-12-10 => ํด๊ฒฐ์ฑ ์ ์๊ฒ๋๋ฉด ์์ฑํ๊ฒ ์..!)
if(pick == N - 2) {
break;
}
- ๋ง์์ 2๊ฐ๋ก ๋ถํ ํ๋ ๋ฐฉ๋ฒ ์ค ์ ์ง๋น๊ฐ ๊ฐ์ฅ ๋ง์ด ๋๋ ๊ธธ์ ์ฐพ์๋ด์ ๊ทธ ๊ธธ์ ์ ๊ฑฐํ๋ฉด ๋๊ฐ๋ก ๋๋ ์ง๋ค๋ ์ ... ์ ๋ง ์ ๋ฐํ๋ค. (๋ค๋ฅธ ๋ถ ์ฝ๋ ์ฐธ๊ณ ํจ) ์ด๋ป๊ฒ ์ด๋ฐ ์๊ฐ์ ํ์ง.
๐พ ์์ค์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
import java.util.StringTokenizer;
public class Main_1647 {
static int[] parent;
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken()); //์ ์ ์ ๊ฐ์ : ์ง์ ๊ฐ์
int M = Integer.parseInt(st.nextToken()); //๊ฐ์ ์ ๊ฐ์ : ๊ธธ์ ๊ฐ์
int[][] edges = new int[M][3];
for(int i=0;i<M;i++) {
st = new StringTokenizer(br.readLine());
edges[i][0] = Integer.parseInt(st.nextToken());
edges[i][1] = Integer.parseInt(st.nextToken());
edges[i][2] = Integer.parseInt(st.nextToken());
}//์
๋ ฅ์
//๋๊ฐ์ ์ง์ผ๋ก ๋ถ๋ฆฌํด์ผํจ
Arrays.sort(edges, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return o1[2] - o2[2];
}
});
parent = new int[N+1];
for(int i=1;i<N+1;i++) {
parent[i] = i;
}
long ans = 0;
int pick = 0;
int bigger = 0; //์ฐ๊ฒฐํ ๊ธธ ์ค ๊ฐ์ฅ ํฐ ๊ฐ ๊ตฌํด์ ๋์ค์ ์ด๊ธธ ์ ๊ฑฐํ๋ฉด ๋ง์์ด 2๊ฐ๋ก ใ
์ชผ๊ฐ์ง.
for(int i=0;i<M;i++) {
int x = edges[i][0];
int y = edges[i][1];
if(findset(x) != findset(y)) {
union(x, y);
bigger = Math.max(edges[i][2], bigger); //๊ธธ์ค ์ ์ง๋น๊ฐ ๊ฐ์ฅ ๋ง์ด ๋๋ ๊ธธ ์ฐพ๊ธฐ
ans += edges[i][2];
pick++;
}
// if(pick == N - 2) {
// break;
// }
}
//๊ธธ ์ค์์ bigger one ๋นผ๊ธฐ => ๋ง์ ๋๊ฐ๋ก ๋ถ๋ฆฌํ๊ธฐ
System.out.println(ans - bigger);
}
private static void union(int x, int y) {
parent[findset(y)] = findset(x);
}
private static int findset(int x) {
if(x != parent[x])
parent[x] = findset(parent[x]);
return parent[x];
}
}
๐ต๐ซ ๊ณต๋ถํด์ผ ํ ์
- ํ ๋ฌธ์ ๋ฅผ ํ๋๋ผ๋ ์ฌ๋ฌ ๋ฐฉ๋ฉด์ผ๋ก ํ์ด๋ณด๋ ค๊ณ ๋ ธ๋ ฅํ์.
- ๋ฌธ์ ๋ง๋ ๊ฒ์ด ์ค์ํ๊ฒ ์๋๊ณ , ๋ด๊ฐ ์ง์ง ์ค์ค๋ก์ ํ์ผ๋ก ๊ตฌํํ ์ ์๋์ง๊ฐ ์ค์..
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ_7785]ํ์ฌ์ ์๋ ์ฌ๋(์ค๋ฒ5) - JAVA (2) | 2023.12.16 |
---|---|
[BOJ_1976] ์ฌํ๊ฐ์ (๊ณจ๋4) - JAVA (0) | 2023.12.12 |
[BOJ_6497]์ ๋ ฅ๋ (๊ณจ๋ 4) - JAVA (1) | 2023.12.08 |
[BOJ_1759]์ํธ ๋ง๋ค๊ธฐ (๊ณจ๋ 5) - JAVA (0) | 2023.12.07 |
[BOJ_1182]๋ถ๋ถ์์ด์ ํฉ (์ค๋ฒ 2) - JAVA (3) | 2023.11.30 |