์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
Tags
- ํ์ด์ฝ ์ถ์ฒ์ธ
- SWEA
- php ํ๋ก๊ทธ๋๋ฐ ์ ๋ฌธ ์์
- php ํ๋ก๊ทธ๋๋ฐ ์ ๋ฌธ 3ํ
- php ํ๋ก๊ทธ๋๋ฐ
- JAVA SPRING
- C
- Java
- php ํ๋ก๊ทธ๋๋ฐ ์ ๋ฌธ ์ฐ์ต๋ฌธ์
- ํ๋ฌํฐ ๊ฐ๋ฐํ๊ฒฝ ์ค์
- ํ์ด์ฝ ์น๊ตฌ์ฝ๋
- ์ต๋จ ๊ฒฝ๋ก
- ๋ฐฑ์ค
- Flutter
- C์ธ์ด
- php ํ๋ก๊ทธ๋๋ฐ ์ ๋ฌธ ์๋ฃจ์
- ํ์ด์ฌ
- programmers
- ๋ฐฐ์ด
- php ํ๋ก๊ทธ๋๋ฐ ์ ๋ฌธ ๋ฌธ์ ํ์ด
- ์๋ฐ ์คํ๋ง
- ํ์ด์ฝ ์ถ์ฒ์ธ์ฝ๋
- php ํ๋ก๊ทธ๋๋ฐ ์ ๋ฌธ
- ํ์ ๋ถ๊ธฐ
- spring
- ์คํ๋ง
- php
- ํ์ด์ฝ ์ด๋์ฝ๋
- ํ๋ฌํฐ
- ์๋ฐ
Archives
- Today
- Total
03-11 05:31
ImJay
[BOJ/Java] 11404. ํ๋ก์ด๋ ๋ณธ๋ฌธ
๋ฐ์ํ
๐ [BOJ/Java] 11404. ํ๋ก์ด๋
๐ก ๋ฌธ์ ํด์
N๊ฐ์ ๋์๊ฐ ์๊ณ , M๊ฐ์ ๋ฒ์ค ๋
ธ์ ์ด ์กด์ฌํ๋ค.
๊ฐ ๋ฒ์ค๋ ํน์ ํ ๋น์ฉ์ด ์์ผ๋ฉฐ, ๋์ ๊ฐ ์ต๋จ ๋น์ฉ์ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ค.
๐น ์ฃผ์ด์ง ์ ๋ณด
- N: ๋์์ ๊ฐ์ (2 ≤ N ≤ 100)
- M: ๋ฒ์ค ๋ ธ์ ์ ๊ฐ์ (1 ≤ M ≤ 100,000)
- A B C: A๋ฒ ๋์์์ B๋ฒ ๋์๋ก ๊ฐ๋ ๋น์ฉ์ด C (์ค๋ณต ๊ฐ๋ฅ)
โ
๋ชฉํ:
1๏ธโฃ ๋ชจ๋ ๋์ ์(i → j)์ ๋ํ ์ต์ ๋น์ฉ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ๊ธฐ
2๏ธโฃ ๊ฒฝ๋ก๊ฐ ์๋ ๊ฒฝ์ฐ 0์ ์ถ๋ ฅ
๐ ํ์ด ๊ณผ์
1๏ธโฃ ํ๋ก์ด๋-์์ ์๊ณ ๋ฆฌ์ฆ ์ฌ์ฉ
- ๋ชจ๋ ๋ ธ๋์์ ๋ชจ๋ ๋ ธ๋๊น์ง์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ฏ๋ก ํ๋ก์ด๋-์์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉ
- ์๊ฐ ๋ณต์ก๋: O(N³), N=100์ด๋ฏ๋ก ์ถฉ๋ถํ ๊ฐ๋ฅ
2๏ธโฃ ์ด๊ธฐํ
- ๋ฌดํ๋(INF) ๊ฐ ์ค์ (dist[i][j] = INF)
- ์๊ธฐ ์์ ์ผ๋ก ๊ฐ๋ ๊ฒฝ๋ก dist[i][i] = 0
- ์ ๋ ฅ๊ฐ์ ๋ฐํ์ผ๋ก ์ง์ ์ด๋ ๊ฐ๋ฅํ ๊ฑฐ๋ฆฌ ์ค์
3๏ธโฃ ํ๋ก์ด๋-์์ ์ํ
- k๋ฒ ๋ ธ๋๋ฅผ ๊ฑฐ์ณ๊ฐ๋ ๊ฒฝ๋ก(i → k → j)๋ฅผ ๊ณ ๋ คํ์ฌ i → j๋ก ๊ฐ๋ ์ต์ ๋น์ฉ ๊ฐฑ์
๐ป ์ฝ๋ (Java)
import java.util.*;
public class Main {
static final int INF = 1000000000;
static int N, M;
static int[][] dist;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
M = sc.nextInt();
dist = new int[N + 1][N + 1];
// ๊ฑฐ๋ฆฌ ๋ฐฐ์ด ์ด๊ธฐํ
for (int i = 1; i <= N; i++) {
Arrays.fill(dist[i], INF);
dist[i][i] = 0; // ์๊ธฐ ์์ ์ 0
}
// ์
๋ ฅ ๋ฐ๊ธฐ
for (int i = 0; i < M; i++) {
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
dist[a][b] = Math.min(dist[a][b], c); // ๊ฐ์ ๋
ธ์ ์ด ์ฌ๋ฌ ๊ฐ์ผ ์ ์์
}
// ํ๋ก์ด๋-์์
์๊ณ ๋ฆฌ์ฆ ์ํ
for (int k = 1; k <= N; k++) {
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= N; j++) {
if (dist[i][k] != INF && dist[k][j] != INF) {
dist[i][j] = Math.min(dist[i][j], dist[i][k] + dist[k][j]);
}
}
}
}
// ๊ฒฐ๊ณผ ์ถ๋ ฅ
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= N; j++) {
System.out.print((dist[i][j] == INF ? "0" : dist[i][j]) + " ");
}
System.out.println();
}
}
}
โฑ ์๊ฐ ๋ณต์ก๋ ๋ถ์
- ํ๋ก์ด๋-์์ ์๊ณ ๋ฆฌ์ฆ: O(N³), N ≤ 100์ด๋ฏ๋ก 100³ = 1,000,000 ์ฐ์ฐ์ ์ถฉ๋ถํ ๊ฐ๋ฅ
๐ง ๋๋ ์
โ
ํ๋ก์ด๋-์์
์๊ณ ๋ฆฌ์ฆ์ ๊ธฐ๋ณธ์ ์ธ ํํ๋ฅผ ์ตํ ์ ์์๋ค.
โ
์ค๋ณต ๊ฐ์ ์ด ์กด์ฌํ ์ ์์ผ๋ฏ๋ก Math.min()์ผ๋ก ์ต์ ๋น์ฉ ๊ฐฑ์ ํด์ผ ํ๋ค.
โ
๊ฒฝ๋ก๊ฐ ์์ ๊ฒฝ์ฐ 0์ ์ถ๋ ฅํ๋ ์ฒ๋ฆฌ๋ฅผ ์กฐ์ฌํด์ผ ํ๋ค.
๐ ๊ทธ๋ํ ์ต๋จ ๊ฒฝ๋ก ๋ฌธ์ ์ ๊ธฐ๋ณธ ์ค ๊ธฐ๋ณธ! ํ์คํ๊ฒ ์ตํ์ผ ํ ๋ฌธ์ ๋ค. ๐
๋ฐ์ํ
'์๊ณ ๋ฆฌ์ฆ > BOJ - Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ/Java] 2931. ๊ฐ์ค๊ด (0) | 2025.03.10 |
---|---|
[BOJ/Java] 11657. ํ์๋จธ์ (0) | 2025.03.10 |
[BOJ/Java] 1981. ๋ฐฐ์ด์์ ์ด๋ (1) | 2025.03.10 |
[BOJ/Java] 9370. ๋ฏธํ์ธ ๋์ฐฉ์ง (0) | 2025.03.10 |
[BOJ/Java] 1039. ๊ตํ (0) | 2025.03.10 |
Comments