반응형
🔺 문제
코드트리 | 코딩테스트 준비를 위한 알고리즘 정석
국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.
www.codetree.ai
🔺 코드
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
import java.util.*;
import java.io.*;
public class Main {
static int INF = 987654321; // Integer.MAX_VALUE로 하면 틀림
static int[][] dist;
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws IOException {
// 최단 거리 배열 초기화
dist = new int[7][7];
for(int i = 1 ; i <= 6 ; i++) {
for(int j = 1 ; j <= 6 ; j++)
dist[i][j] = (i == j) ? 0 : INF;
}
// 양방향
dist[1][2] = 2; dist[2][1] = 2;
dist[1][3] = 5; dist[3][1] = 5;
dist[1][4] = 1; dist[4][1] = 1;
dist[2][3] = 3; dist[3][2] = 3;
dist[2][4] = 2; dist[4][2] = 2;
dist[3][4] = 3; dist[4][3] = 3;
dist[3][5] = 1; dist[5][3] = 1;
dist[3][6] = 5; dist[6][3] = 5;
dist[4][5] = 1; dist[5][4] = 1;
dist[5][6] = 2; dist[6][5] = 2;
// 🔔 플로이드 와샬
for(int k = 1 ; k <= 6 ; k++) {
for(int i = 1 ; i <= 6 ; i++) {
for(int j = 1 ; j <= 6; j++) {
if(dist[i][j] > dist[i][k] + dist[k][j]) {
dist[i][j] = dist[i][k] + dist[k][j];
}
}
}
}
// 출력하기
for(int i = 1 ; i <= 6 ; i++) {
for(int j = 1 ; j <= 6 ; j++)
sb.append(dist[i][j] == INF ? "INF" : dist[i][j]).append(" ");
sb.append("\n");
}
System.out.println(sb);
}
}
|
cs |
💥 유의사항
• INF를 초기화할 때, Integer.MAX_VALUE로 하면 틀림
⇨ 오버플로우 발생 가능하므로
플로이드 와샬에서는 INF 값 초기화 시,
Integer.MAX_VALUE 대신 충분히 큰 값 사용
💬 느낀 점
이렇게만 풀면 얼매나 좋게요....
입력값 양방향으로 하나하나 넣는 게 조굼 귀찮았다,,
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V |
(참고)
플로이드-워셜
목차 📍 정의 및 특징 모든 노드 간 최단 경로 탐색 - 음수 가중치 에지가 있어도 수행 가능 - DP 원리 이용 (점화식) D[S][E] = Math.min(D[S][E], D[S][K] + D[K][E]) : A → B까지 최단 경로를 구할 때, 최단 경
bono039.tistory.com
반응형
'코테 > 코드트리' 카테고리의 다른 글
[코드트리/INTERMEDIATE LOW] 최고의 33위치 (JAVA) (0) | 2023.09.27 |
---|---|
[코드트리/NOVICE HIGH] MST 찾기 (JAVA) (0) | 2023.09.27 |
[코드트리/NOVICE HIGH] 네비게이션 (JAVA) (0) | 2023.09.22 |
[코드트리/NOVICE HIGH] 쪼개어 배낭 채우기 2 (JAVA) (0) | 2023.09.20 |
[코드트리/NOVICE HIGH] Edit Distance (JAVA) (0) | 2023.09.15 |