- Today
- Total
- ์๋ฃ๊ตฌ์กฐ
- ์๋ฐ์์ ์
- ๋ฒจ๋งํฌ๋
- BFS
- ๋ฌธ๋ฒ
- ๊ตฌํ
- OOP
- ๊ทธ๋ฆฌ๋
- Algorithm
- ์ธํด
- ๋ค์ต์คํธ๋ผ
- tree
- MST
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- java
- spring
- array
- leetcode
- ๋ฐฑ์ค
- ์๋ฐ
- ๋ฐฑ์๋
- PS
- ์กธ์ ์ํ
- Graph
- pytorch
- ์์์ ๋ ฌ
- dp
- CS
- ํ๋ก๊ทธ๋๋จธ์ค
- database
Partially Committed
[๋ฐฑ์ค 1414] ๋ถ์ฐ์ด์๋๊ธฐ (JAVA) ๋ณธ๋ฌธ
[๋ฐฑ์ค 1414] ๋ถ์ฐ์ด์๋๊ธฐ (JAVA)
WonderJay 2023. 1. 20. 11:34https://www.acmicpc.net/problem/1414
๋ฌธ์
๋ค์์ด๋ ๋ถ์ฐ์ด์ ๋๊ธฐ ํ๋์ ํ๊ธฐ ์ํด ๋ฌด์์ ํ ์ง ์๊ฐํ๋ค. ๋ง์นจ ์ง์ ์์ฒญ๋๊ฒ ๋ง์ ๋์ ์ด ์๋ค๋ ๊ฒ์ ๊นจ๋ฌ์๋ค. ๋ง์นจ ๋์ ์ด ์ด๋ ๊ฒ ๋ง์ด ํ์ ์๋ค๊ณ ๋๋ ๋ค์์ด๋ ๋์ ์ ์ง์ญ์ฌํ์ ๋ด์ฌํ๊ธฐ๋ก ํ๋ค.
๋ค์์ด์ ์ง์๋ N๊ฐ์ ๋ฐฉ์ด ์๋ค. ๊ฐ๊ฐ์ ๋ฐฉ์๋ ๋ชจ๋ ํ ๊ฐ์ ์ปดํจํฐ๊ฐ ์๋ค. ๊ฐ๊ฐ์ ์ปดํจํฐ๋ ๋์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์๋ค. ์ด๋ค ์ปดํจํฐ A์ ์ปดํจํฐ B๊ฐ ์์ ๋, A์ B๊ฐ ์๋ก ๋์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์๊ฑฐ๋, ๋ ๋ค๋ฅธ ์ปดํจํฐ๋ฅผ ํตํด์ ์ฐ๊ฒฐ์ด ๋์ด์์ผ๋ฉด ์๋ก ํต์ ์ ํ ์ ์๋ค.
๋ค์์ด๋ ์ง ์์ ์๋ N๊ฐ์ ์ปดํจํฐ๋ฅผ ๋ชจ๋ ์๋ก ์ฐ๊ฒฐ๋๊ฒ ํ๊ณ ์ถ๋ค.
N๊ฐ์ ์ปดํจํฐ๊ฐ ์๋ก ์ฐ๊ฒฐ๋์ด ์๋ ๋์ ์ ๊ธธ์ด๊ฐ ์ฃผ์ด์ง ๋, ๋ค์์ด๊ฐ ๊ธฐ๋ถํ ์ ์๋ ๋์ ์ ๊ธธ์ด์ ์ต๋๊ฐ์ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ปดํจํฐ์ ๊ฐ์ N์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ ๋์ ์ ๊ธธ์ด๊ฐ ์ฃผ์ด์ง๋ค. i๋ฒ์งธ ์ค์ j๋ฒ์งธ ๋ฌธ์๊ฐ 0์ธ ๊ฒฝ์ฐ๋ ์ปดํจํฐ i์ ์ปดํจํฐ j๋ฅผ ์ฐ๊ฒฐํ๋ ๋์ ์ด ์์์ ์๋ฏธํ๋ค. ๊ทธ ์ธ์ ๊ฒฝ์ฐ๋ ๋์ ์ ๊ธธ์ด๋ฅผ ์๋ฏธํ๋ค. ๋์ ์ ๊ธธ์ด๋ a๋ถํฐ z๋ 1๋ถํฐ 26์ ๋ํ๋ด๊ณ , A๋ถํฐ Z๋ 27๋ถํฐ 52๋ฅผ ๋ํ๋ธ๋ค. N์ 50๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋ค์์ด๊ฐ ๊ธฐ๋ถํ ์ ์๋ ๋์ ์ ๊ธธ์ด์ ์ต๋๊ฐ์ ์ถ๋ ฅํ๋ค. ๋ง์ฝ, ๋ชจ๋ ์ปดํจํฐ๊ฐ ์ฐ๊ฒฐ๋์ด ์์ง ์์ผ๋ฉด -1์ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1
3
abc
def
ghi
์์ ์ถ๋ ฅ 1
40
์์ ์ ๋ ฅ 2
2
a0
0b
์์ ์ถ๋ ฅ 2
-1
์์ ์ ๋ ฅ 3
4
0X00
00Y0
0000
00Z0
์์ ์ถ๋ ฅ 3
0
์์ ์ ๋ ฅ 4
2
Az
aZ
์์ ์ถ๋ ฅ 4
105
์์ ์ ๋ ฅ 5
4
0top
c0od
er0o
pen0
์์ ์ถ๋ ฅ 5
134
์ ์ฒด ๋์ ๊ธธ์ด๋ฅผ ๊ตฌํ๊ณ ,
MST ์ ๋์ ๊ธธ์ด๋ฅผ ๋นผ์ฃผ๋ฉด ๋๋ค.
import javax.imageio.spi.ImageInputStreamSpi;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
public class Main {
static int[] parent;
public static void main(String[] args) throws IOException {
System.setIn(new FileInputStream("src/input.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int total_length = 0;
PriorityQueue<Edge> pq = new PriorityQueue<>();
for (int i = 0; i < n; i++) {
char[] arr = br.readLine().toCharArray(); // ์
๋ ฅ ๋ฐ์
for (int j = 0; j < n; j++) {
if (arr[j] == '0')
continue;
else{
int t = toLength(arr[j]);
total_length += t;
if(i!=j&&t!=0) pq.add(new Edge(i, j, toLength(arr[j])));
}
}
}
// ์ด์ mst ๋ฅผ ์ฐพ์.
parent = new int[n + 1];
for (int i = 0; i <= n; i++)
parent[i] = i;
int mst_length=0;
int used=0;
while (!pq.isEmpty()) {
Edge now_edge = pq.poll();
if(find(now_edge.st)!=find(now_edge.end)){
union(now_edge.st, now_edge.end);
mst_length+=now_edge.w;
used++;
}
}
if(used==n-1)
System.out.println(total_length-mst_length);
else System.out.println(-1);
}
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;
else return parent[a] = find(parent[a]);
}
static int toLength(char ele) {
if (ele >= 'a' && ele <= 'z') {
return ele - 'a' + 1;
} else {
return ele - 'A' + 27;
}
}
static class Edge implements Comparable<Edge> {
int st;
int end;
int w;
public Edge(int s, int e, int w) {
this.st = s;
this.end = e;
this.w = w;
}
@Override
public int compareTo(Edge v) {
return this.w > v.w ? 1 : -1;
}
}
}
'๐ฅ Algorithm || ๋ฌธ์ ํ์ด > PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค 1991] ํธ๋ฆฌ ์ํ (JAVA) (0) | 2023.01.22 |
---|---|
[๋ฐฑ์ค 1068] ํธ๋ฆฌ (JAVA) (0) | 2023.01.22 |
[๋ฐฑ์ค 17472] ๋ค๋ฆฌ ๋ง๋ค๊ธฐ2 (JAVA) (0) | 2023.01.19 |
[๋ฐฑ์ค 1197] ์ต์ ์คํจ๋ ํธ๋ฆฌ (JAVA) (0) | 2023.01.19 |
[๋ฐฑ์ค 1389] ์ผ๋น ๋ฒ ์ด์ปจ์ 6๋จ๊ณ ๋ฒ์น (0) | 2023.01.19 |