b11780. ํ”Œ๋กœ์ด๋“œ 2

2025. 4. 25. 02:00ยทAlgorithm & Data Structures/BOJ

 

https://www.acmicpc.net/problem/11780

 

 

 

๐Ÿ“Œ ์ž๋ฐ”(Java)๋กœ ํ‘ธ๋Š” ํ”Œ๋กœ์ด๋“œ 2 - ๋ฐฑ์ค€ 11780 ๐Ÿ›ฃ๏ธ

์ตœ๋‹จ ๊ฑฐ๋ฆฌ + ๊ฒฝ๋กœ ์ถœ๋ ฅ๊นŒ์ง€ ํฌํ•จํ•œ ํ”Œ๋กœ์ด๋“œ ์›Œ์…œ(Floyd-Warshall)

 

๐Ÿ”Ž ๋ฌธ์ œ ๊ฐœ์š”

 

๋ฐฑ์ค€ 11780 - ํ”Œ๋กœ์ด๋“œ 2๋Š”

๋ชจ๋“  ๋„์‹œ ์Œ์— ๋Œ€ํ•ด ์ตœ๋‹จ ๊ฒฝ๋กœ์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋Š” ๊ฒƒ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ,

๊ฐ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ง์ ‘ ๊ฒฝ๋กœ๋กœ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

 



 

๐Ÿ’ก ์˜ˆ์ œ ์ž…๋ ฅ

5
14
1 2 2
1 3 3
1 4 1
...

 

๐Ÿ’ก ์˜ˆ์ œ ์ถœ๋ ฅ

0 2 3 1 10
0
2 1 2
3 1 3
2 1 4
...

 

 


๐Ÿ›  ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ ‘๊ทผ ๋ฐฉ์‹

 

์ด ๋ฌธ์ œ๋Š” ์ „ํ˜•์ ์ธ Floyd-Warshall (ํ”Œ๋กœ์ด๋“œ-์›Œ์…œ) ์•Œ๊ณ ๋ฆฌ์ฆ˜์—

โœ” ๊ฒฝ๋กœ ์ถ”์ ๊นŒ์ง€ ๋ง๋ถ™์ด๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

 

  • costs[i][j]: ๋„์‹œ i์—์„œ j๊นŒ์ง€์˜ ์ตœ์†Œ ๋น„์šฉ
  • lists[i][j]: ๋„์‹œ i์—์„œ j๊นŒ์ง€ ์ด๋™ํ•  ๋•Œ ๊ฑฐ์ณ์•ผ ํ•˜๋Š” ๊ฒฝ์œ  ๋„์‹œ ๋ฆฌ์ŠคํŠธ

 


๐Ÿ”น Java ์ฝ”๋“œ ์„ค๋ช…

๐Ÿ“Œ ์ดˆ๊ธฐํ™”

costs = new int[N+1][N+1];
lists = new ArrayList[N+1][N+1];

โœ” costs[i][j]๋ฅผ INF๋กœ ์ดˆ๊ธฐํ™”ํ•˜๋ฉฐ

โœ” ๊ฒฝ๋กœ ์ €์žฅ์šฉ lists[i][j]๋Š” ๊ฐ ์Œ๋งˆ๋‹ค ArrayList ์ƒ์„ฑ

 

๐Ÿ“Œ ๊ฐ„์„  ์ž…๋ ฅ

costs[a][b] = Math.min(cost, costs[a][b]);

โœ” ๋™์ผ ๋…ธ์„  ์ค‘ ๋” ์งง์€ ๋น„์šฉ๋งŒ ์ €์žฅ

 

๐Ÿ“Œ ํ”Œ๋กœ์ด๋“œ ์›Œ์…œ ํ•ต์‹ฌ

if (costs[i][j] > costs[i][k] + costs[k][j]) {
    costs[i][j] = costs[i][k] + costs[k][j];
    routeTracking(i, j, k);
}

โœ” i → j๋กœ ๋ฐ”๋กœ ๊ฐ€๋Š” ๊ฒƒ๋ณด๋‹ค

โœ” i → k → j๊ฐ€ ๋” ์ €๋ ดํ•˜๋‹ค๋ฉด ๊ฐฑ์‹ 

โœ” ์ด ๋•Œ ๊ฒฝ๋กœ ๋ฆฌ์ŠคํŠธ๋„ ์—…๋ฐ์ดํŠธ

 

๐Ÿ“Œ ๊ฒฝ๋กœ ๊ฐฑ์‹  ํ•จ์ˆ˜

public static void routeTracking(int i, int j, int k){
    lists[i][j].clear();
    lists[i][j].addAll(lists[i][k]);
    lists[i][j].add(k);
    lists[i][j].addAll(lists[k][j]);
}

โœ” ์ค‘๊ฐ„์— k๋ฅผ ๊ฑฐ์นœ ๊ฒฝ๋กœ๋กœ ์ „์ฒด ๊ฒฝ๋กœ ์—…๋ฐ์ดํŠธ

โœ” ์žฌ๊ท€๊ฐ€ ์•„๋‹Œ ํ”Œ๋žซํ•œ ๋ฆฌ์ŠคํŠธ ๊ตฌ์กฐ ์œ ์ง€

 

๐Ÿ“Œ ์ถœ๋ ฅ

โ–ถ ๊ฑฐ๋ฆฌ ์ถœ๋ ฅ

if (costs[i][j] == INF) sb.append(0 + " ");
else sb.append(costs[i][j] + " ");

 

โ–ถ ๊ฒฝ๋กœ ์ถœ๋ ฅ

int size = lists[i][j].size();
sb.append((size + 2) + " " + i + " ");
for (int num : lists[i][j]) sb.append(num + " ");
sb.append(j + "\n");

โœ” ๊ฒฝ๋กœ ์ถœ๋ ฅ์€

 

  • ์‹œ์ž‘ ๋„์‹œ i
  • ๊ฒฝ์œ ์ง€๋“ค
  • ๋„์ฐฉ ๋„์‹œ j
  • ๊นŒ์ง€ ๋ชจ๋‘ ํฌํ•จ

๐Ÿ† ์ •๋ฆฌ

โœ… ํ•ต์‹ฌ ํฌ์ธํŠธ

  • Floyd-Warshall ๊ธฐ๋ณธ ๊ตฌ์กฐ๋Š” O(N³)
  • ๊ฒฝ๋กœ ์ €์žฅ์€ ์ค‘๊ฐ„ ๊ฒฝ์œ ์ง€๋ฅผ ๋ฆฌ์ŠคํŠธ๋กœ ๋ˆ„์ 
  • ๊ฒฝ๋กœ ์ถœ๋ ฅ์ด ํ•„์š”ํ•  ๋•Œ๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ์ง์ ‘ ๋ณต์‚ฌ + ์—ฐ๊ฒฐ
 

 

'Algorithm & Data Structures > BOJ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

b4803. ํŠธ๋ฆฌ  (0) 2025.04.28
b2263. ํŠธ๋ฆฌ์˜ ์ˆœํšŒ  (0) 2025.04.28
b13913. ์ˆœ๊ฐ„์ด๋™ 4  (0) 2025.04.22
b2618. ๊ฒฝ์ฐฐ์ฐจ  (0) 2025.04.18
b14003. ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„์ˆ˜์—ด 5  (0) 2025.04.16
'Algorithm & Data Structures/BOJ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • b4803. ํŠธ๋ฆฌ
  • b2263. ํŠธ๋ฆฌ์˜ ์ˆœํšŒ
  • b13913. ์ˆœ๊ฐ„์ด๋™ 4
  • b2618. ๊ฒฝ์ฐฐ์ฐจ
Geisha
Geisha
๊ฐœ๋ฐœ ์ผ๊ธฐ
  • Geisha
    Geisha
    Geisha
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (343) N
      • Algorithm & Data Structures (261) N
        • BOJ (119) N
        • SWEA (1)
        • Programers (137)
        • Data Structures (3)
      • DB (29)
        • SQL (23)
        • RDBMS (2)
      • Java (1)
        • Class (1)
      • Spring (5)
        • Spring MVC (1)
        • Annotations (1)
      • CS (36)
        • ์šด์˜์ฒด์ œ (13)
        • ๋„คํŠธ์›Œํฌ (5)
      • Tool (6)
        • Git (5)
        • AWS (1)
      • Project (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    binarySearch
    ์ด๋ถ„ํƒ์ƒ‰
    SQL
    BFS
    ํ›„์œ„์ˆœํšŒ
    ๊ณจ๋“œ
    baekjoon
    ์œ ๋‹ˆ์˜จํŒŒ์ธ๋“œ
    dp
    ์Šคํƒ
    Dijkstra
    ์ž๋ฐ”
    ๋‹ค์ต์ŠคํŠธ๋ผ
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    ๊ตฌํ˜„
    ๋™์ ๊ณ„ํš๋ฒ•
    ํˆฌํฌ์ธํ„ฐ
    ๋ฐฑ์ค€
    ๊ฒฝ๋กœ์••์ถ•
    Java
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    ๋ฐฑํŠธ๋ž˜ํ‚น
    algorithm
    ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ
    Stack
    programmers
    DynamicProgramming
    Union-Find
    PriorityQueue
    dfs
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.0
Geisha
b11780. ํ”Œ๋กœ์ด๋“œ 2
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”