CodingTest/Java
BOJ_11404 : ํ๋ก์ด๋
Soom_1n
2024. 1. 31. 16:05
11404๋ฒ: ํ๋ก์ด๋
์ฒซ์งธ ์ค์ ๋์์ ๊ฐ์ n์ด ์ฃผ์ด์ง๊ณ ๋์งธ ์ค์๋ ๋ฒ์ค์ ๊ฐ์ m์ด ์ฃผ์ด์ง๋ค. ๊ทธ๋ฆฌ๊ณ ์ ์งธ ์ค๋ถํฐ m+2์ค๊น์ง ๋ค์๊ณผ ๊ฐ์ ๋ฒ์ค์ ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋ค. ๋จผ์ ์ฒ์์๋ ๊ทธ ๋ฒ์ค์ ์ถ๋ฐ ๋์์ ๋ฒํธ๊ฐ
www.acmicpc.net
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- ํ๋ก์ด๋-์์ ์๊ณ ๋ฆฌ์ฆ์ ๊ธฐ์ด ๋ฌธ์ ์ด๋ค.
๐ธ ๋ฌธ์ ํ์ด ๐ธ
- ๋จ๋ฐฉํฅ ๊ฐ์ค์น ์ฐ๊ฒฐ ๊ทธ๋ํ์์ ๋ชจ๋ ๊ฒฝ๋ก์ ๋ํ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ค.
๐ธ ์ฝ๋ ๐ธ
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
int m = Integer.parseInt(br.readLine());
int[][] cost = new int[n + 1][n + 1];
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (i != j)
cost[i][j] = Integer.MAX_VALUE;
}
}
for (int i = 0; i < m; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
int c = Integer.parseInt(st.nextToken());
cost[a][b] = Math.min(cost[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 (cost[i][k] != Integer.MAX_VALUE && cost[k][j] != Integer.MAX_VALUE)
cost[i][j] = Math.min(cost[i][j], cost[i][k] + cost[k][j]);
}
}
}
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (cost[i][j] == Integer.MAX_VALUE)
sb.append(0).append(' ');
else
sb.append(cost[i][j]).append(' ');
}
sb.append('\n');
}
bw.write(sb.toString());
bw.flush();
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- n x n ํ๋ ฌ์ ๋ง๋ค์ด ๊ฐ์ค์น๋ฅผ ์ ์ฅํ๋ค.
- ๋จ๋ฐฉํฅ ์ฐ๊ฒฐ์ด๋ฉฐ ์๊ธฐ ์์ ์ 0, ์ฐ๊ฒฐ์ด ์๋์ด ์์ผ๋ฉด Infinity๋ก ์ ์ฅํ๋ค.
- k๋ฅผ ๊ฒฝ์ ์ง๋กํ๋ i -> j ์ฐ๊ฒฐ์ ๋ชจ๋ ํ์ธํด ์ต์๊ฐ์ ๊ฐฑ์ ํ๋ค.
- ๋ชจ๋ i -> j ๊ฐ์ ์ถ๋ ฅํ๋ค.
๐ธ end ๐ธ
- ํ๋ก์ด๋ ์์
๋ฌธ์ ๋ ๋ง์ด ํ์ด๋ณด์ง ์์๋๋ฐ, ์๊ณ ๋ฆฌ์ฆ์ ์๊ณ ๋๋ฉด ๊ฐ๋จํ ํ์ดํ ์ ์์๋ค.
- ํต์ฌ์ k๋ฅผ ๊ฒฝ์ ์ง๋ก ๋๊ณ , ์ต์๊ฐ์ ์ ๋ฐ์ดํธํ๋ ์ ํ์์ด์๋ค.
- ๋จ๋ฐฉํฅ ์ฐ๊ฒฐ์ ์๋ฐฉํฅ ์ฐ๊ฒฐ๋ก ์ฐฉ๊ฐํด 1ํ ํ๋ ธ๋ค.
728x90