- Today
- Total
- pytorch
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ์ธํด
- leetcode
- ๋ค์ต์คํธ๋ผ
- Algorithm
- ์กธ์ ์ํ
- ๋ฐฑ์ค
- array
- OOP
- ๊ทธ๋ฆฌ๋
- MST
- ์๋ฐ
- ๋ฐฑ์๋
- tree
- ํ๋ก๊ทธ๋๋จธ์ค
- ์๋ฃ๊ตฌ์กฐ
- spring
- ์๋ฐ์์ ์
- Graph
- java
- CS
- ๋ฌธ๋ฒ
- PS
- ๋ฒจ๋งํฌ๋
- ๊ตฌํ
- database
- dp
- BFS
- ์์์ ๋ ฌ
Partially Committed
[๋ฐฑ์ค 1389] ์ผ๋น ๋ฒ ์ด์ปจ์ 6๋จ๊ณ ๋ฒ์น ๋ณธ๋ฌธ
[๋ฐฑ์ค 1389] ์ผ๋น ๋ฒ ์ด์ปจ์ 6๋จ๊ณ ๋ฒ์น
WonderJay 2023. 1. 19. 14:29https://www.acmicpc.net/problem/1389
๋ฌธ์
์ผ๋น ๋ฒ ์ด์ปจ์ 6๋จ๊ณ ๋ฒ์น์ ์ํ๋ฉด ์ง๊ตฌ์ ์๋ ๋ชจ๋ ์ฌ๋๋ค์ ์ต๋ 6๋จ๊ณ ์ด๋ด์์ ์๋ก ์๋ ์ฌ๋์ผ๋ก ์ฐ๊ฒฐ๋ ์ ์๋ค. ์ผ๋น ๋ฒ ์ด์ปจ ๊ฒ์์ ์์์ ๋ ์ฌ๋์ด ์ต์ ๋ช ๋จ๊ณ ๋ง์ ์ด์ด์ง ์ ์๋์ง ๊ณ์ฐํ๋ ๊ฒ์์ด๋ค.
์๋ฅผ ๋ค๋ฉด, ์ ํ ์๊ด์์ ๊ฒ ๊ฐ์ ์ธํ๋ํ๊ต์ ์ด๊ฐํธ์ ์๊ฐ๋ํ๊ต์ ๋ฏผ์ธํฌ๋ ๋ช ๋จ๊ณ๋ง์ ์ด์ด์ง ์ ์์๊น?
์ฒ๋ฏผํธ๋ ์ด๊ฐํธ์ ๊ฐ์ ํ๊ต์ ๋ค๋๋ ์ฌ์ด์ด๋ค. ์ฒ๋ฏผํธ์ ์ต๋ฐฑ์ค์ Baekjoon Online Judge๋ฅผ ํตํด ์๊ฒ ๋์๋ค. ์ต๋ฐฑ์ค๊ณผ ๊น์ ์์ ๊ฐ์ด Startlink๋ฅผ ์ฐฝ์ ํ๋ค. ๊น์ ์๊ณผ ๊น๋ํ์ ๊ฐ์ ํ๊ต ๋์๋ฆฌ ์์์ด๋ค. ๊น๋ํ๊ณผ ๋ฏผ์ธํฌ๋ ๊ฐ์ ํ๊ต์ ๋ค๋๋ ์ฌ์ด๋ก ์๋ก ์๊ณ ์๋ค. ์ฆ, ์ด๊ฐํธ-์ฒ๋ฏผํธ-์ต๋ฐฑ์ค-๊น์ ์-๊น๋ํ-๋ฏผ์ธํฌ ์ ๊ฐ์ด 5๋จ๊ณ๋ง ๊ฑฐ์น๋ฉด ๋๋ค.
์ผ๋น ๋ฒ ์ด์ปจ์ ๋ฏธ๊ตญ ํ๋ฆฌ์ฐ๋ ์ํ๋ฐฐ์ฐ๋ค ๋ผ๋ฆฌ ์ผ๋น ๋ฒ ์ด์ปจ ๊ฒ์์ ํ์๋ ๋์ค๋ ๋จ๊ณ์ ์ด ํฉ์ด ๊ฐ์ฅ ์ ์ ์ฌ๋์ด๋ผ๊ณ ํ๋ค.
์ค๋์ Baekjoon Online Judge์ ์ ์ ์ค์์ ์ผ๋น ๋ฒ ์ด์ปจ์ ์๊ฐ ๊ฐ์ฅ ์์ ์ฌ๋์ ์ฐพ์ผ๋ ค๊ณ ํ๋ค. ์ผ๋น ๋ฒ ์ด์ปจ ์๋ ๋ชจ๋ ์ฌ๋๊ณผ ์ผ๋น ๋ฒ ์ด์ปจ ๊ฒ์์ ํ์ ๋, ๋์ค๋ ๋จ๊ณ์ ํฉ์ด๋ค.
์๋ฅผ ๋ค์ด, BOJ์ ์ ์ ๊ฐ 5๋ช ์ด๊ณ , 1๊ณผ 3, 1๊ณผ 4, 2์ 3, 3๊ณผ 4, 4์ 5๊ฐ ์น๊ตฌ์ธ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด๋ณด์.
1์ 2๊น์ง 3์ ํตํด 2๋จ๊ณ ๋ง์, 3๊น์ง 1๋จ๊ณ, 4๊น์ง 1๋จ๊ณ, 5๊น์ง 4๋ฅผ ํตํด์ 2๋จ๊ณ ๋ง์ ์ ์ ์๋ค. ๋ฐ๋ผ์, ์ผ๋น ๋ฒ ์ด์ปจ์ ์๋ 2+1+1+2 = 6์ด๋ค.
2๋ 1๊น์ง 3์ ํตํด์ 2๋จ๊ณ ๋ง์, 3๊น์ง 1๋จ๊ณ ๋ง์, 4๊น์ง 3์ ํตํด์ 2๋จ๊ณ ๋ง์, 5๊น์ง 3๊ณผ 4๋ฅผ ํตํด์ 3๋จ๊ณ ๋ง์ ์ ์ ์๋ค. ๋ฐ๋ผ์, ์ผ๋น ๋ฒ ์ด์ปจ์ ์๋ 2+1+2+3 = 8์ด๋ค.
3์ 1๊น์ง 1๋จ๊ณ, 2๊น์ง 1๋จ๊ณ, 4๊น์ง 1๋จ๊ณ, 5๊น์ง 4๋ฅผ ํตํด 2๋จ๊ณ ๋ง์ ์ ์ ์๋ค. ๋ฐ๋ผ์, ์ผ๋น ๋ฒ ์ด์ปจ์ ์๋ 1+1+1+2 = 5์ด๋ค.
4๋ 1๊น์ง 1๋จ๊ณ, 2๊น์ง 3์ ํตํด 2๋จ๊ณ, 3๊น์ง 1๋จ๊ณ, 5๊น์ง 1๋จ๊ณ ๋ง์ ์ ์ ์๋ค. 4์ ์ผ๋น ๋ฒ ์ด์ปจ์ ์๋ 1+2+1+1 = 5๊ฐ ๋๋ค.
๋ง์ง๋ง์ผ๋ก 5๋ 1๊น์ง 4๋ฅผ ํตํด 2๋จ๊ณ, 2๊น์ง 4์ 3์ ํตํด 3๋จ๊ณ, 3๊น์ง 4๋ฅผ ํตํด 2๋จ๊ณ, 4๊น์ง 1๋จ๊ณ ๋ง์ ์ ์ ์๋ค. 5์ ์ผ๋น ๋ฒ ์ด์ปจ์ ์๋ 2+3+2+1 = 8์ด๋ค.
5๋ช ์ ์ ์ ์ค์์ ์ผ๋น ๋ฒ ์ด์ปจ์ ์๊ฐ ๊ฐ์ฅ ์์ ์ฌ๋์ 3๊ณผ 4์ด๋ค.
BOJ ์ ์ ์ ์์ ์น๊ตฌ ๊ด๊ณ๊ฐ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ก์ ๋, ์ผ๋น ๋ฒ ์ด์ปจ์ ์๊ฐ ๊ฐ์ฅ ์์ ์ฌ๋์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ ์ ์ ์ N (2 ≤ N ≤ 100)๊ณผ ์น๊ตฌ ๊ด๊ณ์ ์ M (1 ≤ M ≤ 5,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ M๊ฐ์ ์ค์๋ ์น๊ตฌ ๊ด๊ณ๊ฐ ์ฃผ์ด์ง๋ค. ์น๊ตฌ ๊ด๊ณ๋ A์ B๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, A์ B๊ฐ ์น๊ตฌ๋ผ๋ ๋ป์ด๋ค. A์ B๊ฐ ์น๊ตฌ์ด๋ฉด, B์ A๋ ์น๊ตฌ์ด๋ฉฐ, A์ B๊ฐ ๊ฐ์ ๊ฒฝ์ฐ๋ ์๋ค. ์น๊ตฌ ๊ด๊ณ๋ ์ค๋ณต๋์ด ๋ค์ด์ฌ ์๋ ์์ผ๋ฉฐ, ์น๊ตฌ๊ฐ ํ ๋ช ๋ ์๋ ์ฌ๋์ ์๋ค. ๋, ๋ชจ๋ ์ฌ๋์ ์น๊ตฌ ๊ด๊ณ๋ก ์ฐ๊ฒฐ๋์ด์ ธ ์๋ค. ์ฌ๋์ ๋ฒํธ๋ 1๋ถํฐ N๊น์ง์ด๋ฉฐ, ๋ ์ฌ๋์ด ๊ฐ์ ๋ฒํธ๋ฅผ ๊ฐ๋ ๊ฒฝ์ฐ๋ ์๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ BOJ์ ์ ์ ์ค์์ ์ผ๋น ๋ฒ ์ด์ปจ์ ์๊ฐ ๊ฐ์ฅ ์์ ์ฌ๋์ ์ถ๋ ฅํ๋ค. ๊ทธ๋ฐ ์ฌ๋์ด ์ฌ๋ฌ ๋ช ์ผ ๊ฒฝ์ฐ์๋ ๋ฒํธ๊ฐ ๊ฐ์ฅ ์์ ์ฌ๋์ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1
5 5
1 3
1 4
4 5
4 3
3 2
์์ ์ถ๋ ฅ 1
3
์ผ๋น ๋ฒ ์ด์ปจ ์๊ฐ ๋ฌด์์ธ์ง ๊ณฐ๊ณฐํ ์๊ฐํด๋ณด์.
A ํ์๊ณผ C ํ์์ ์๋ก ๋ชจ๋ฅด์ง๋ง,
A ํ์์ B ์ ์น๊ตฌ์ด๊ณ C ํ์๋ํ B ์ ์น๊ตฌ๋ผ๋ฉด,
A ํ์์ ๊ฑด๋๊ฑด๋(A-B, B-C : 2) C ์ ์น๊ตฌ์ด๋ค.
์ด๋ฌํ ์ํฉ์์ ๋ช ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ์ ์น๊ตฌ์ธ์ง๋ฅผ ๋ถ๋ถ ์ผ๋น ๋ฒ ์ด์ปจ ์๋ผ๊ณ ์ ์ํ๋ฉด
๋ถ๋ถ ์ผ๋น ๋ฒ ์ด์ปจ ์๋ 2 ์ด๋ค.
A ํ์์ด ๋๋จธ์ง ํ์๋ค ๊ฐ๊ฐ์ ๋ํ ๋ถ๋ถ ์ผ๋น ๋ฒ ์ด์ปจ ์๋ฅผ ๊ตฌํด์ ๋ชจ๋ ๋ํ ๊ฒ์ด A ํ์์ ์ผ๋น ๋ฒ ์ด์ปจ ์์ด๋ค.
์๋ก ์น๊ตฌ ๊ด๊ณ์ธ ๋ ธ๋ ์ฌ์ด์ ๊ฑฐ๋ฆฌ๋ฅผ 1 ์ด๋ผ๊ณ ์ ์ํ๋ฉด,
๋ถ๋ถ ์ผ๋น ๋ฒ ์ด์ปจ ์๋ ๋๋ฌํ ์ ์๋ ๋ ธ๋ ๊น์ง์ ์ต๋จ ๊ฑฐ๋ฆฌ๊ฐ ๋๋ฉฐ,
i ๋ฒ์งธ ํ์์ ์ผ๋น ๋ฒ ์ด์ปจ ์๋ i ๋ ธ๋๋ก๋ถํฐ ๋์ฐฉํ ์ ์๋ ๋ ธ๋ ๊น์ง์ ๋ชจ๋ ์ต๋จ ๊ฑฐ๋ฆฌ์ ํฉ์ด๋ค.
์ด๋ฅผ ๊ตฌํด์ฃผ๋ฉด ๋๋ค.
๋ ธ๋์ ๊ฐ์๊ฐ ๋งค์ฐ ์์ผ๋ฏ๋ก, ํ๋ก์ด๋ ์์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ํ์ดํ๋ ๊ฒ์ด ๊ฐ๋จํ๋ค.
import java.io.*;
import java.util.StringTokenizer;
public class Main {
static int graph[][];
static int INF = 500000;
public static void main(String[] args) throws IOException {
//System.setIn(new FileInputStream("src/input.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer stk = new StringTokenizer(br.readLine());
int n = Integer.parseInt(stk.nextToken());
int m = Integer.parseInt(stk.nextToken());
graph = new int[n + 1][n + 1];
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (i == j)
graph[i][j] = 0;
else graph[i][j] = INF;
}
}
for (int i = 0; i < m; i++) {
stk = new StringTokenizer(br.readLine());
int a = Integer.parseInt(stk.nextToken());
int b = Integer.parseInt(stk.nextToken());
graph[a][b] = 1;
graph[b][a] = 1;
}
// ํ๋ก์ด๋ - ์์
for (int k = 1; k <= n; k++) {
for (int s = 1; s <= n; s++) {
for (int e = 1; e <= n; e++) {
if (graph[s][e] > graph[s][k] + graph[k][e])
graph[s][e] = graph[s][k] + graph[k][e];
}
}
}
int[] num = new int[n + 1];
int min = INF;
for (int i = 1; i <= n; i++) {
int sum = 0;
for (int j = 1; j <= n; j++) {
sum += graph[i][j];
}
num[i] = sum;
if(sum < min)
min = sum;
}
for(int i = 1 ; i<= n; i++)
if(num[i]==min){
bw.write(i+"\n");
break;
}
bw.flush();
bw.close();
}
}
'๐ฅ Algorithm || ๋ฌธ์ ํ์ด > PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค 17472] ๋ค๋ฆฌ ๋ง๋ค๊ธฐ2 (JAVA) (0) | 2023.01.19 |
---|---|
[๋ฐฑ์ค 1197] ์ต์ ์คํจ๋ ํธ๋ฆฌ (JAVA) (0) | 2023.01.19 |
[๋ฐฑ์ค 11403] ๊ฒฝ๋ก ์ฐพ๊ธฐ (0) | 2023.01.19 |
[๋ฐฑ์ค 11404] ํ๋ก์ด๋ (0) | 2023.01.19 |
[๋ฐฑ์ค 1219] ์ค๋ฏผ์์ ๊ณ ๋ฏผ (JAVA) (0) | 2023.01.18 |