ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๐Ÿ’ก Introduction
์ง€๋‚œ ํฌ์ŠคํŠธ์—์„œ๋Š” ์˜ˆ์‹œ ๊ทธ๋ž˜ํ”„๋ฅผ ํ†ตํ•ด ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Dijkstra's algorithm) ์ด ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด์•˜๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‹ค์ œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•  ์ค€๋น„๋ฅผ ํ•œ๋‹ค.

๐Ÿ’ผ ๊ทธ๋ž˜ํ”„์˜ ํ‘œํ˜„

๊ฐ€์žฅ ๋จผ์ €, ๊ทธ๋ž˜ํ”„๋ฅผ ์–ด๋–ป๊ฒŒ ํ‘œํ˜„ํ• ์ง€ ์ƒ๊ฐํ•ด๋ณด์ž. ์ผ๋‹จ ๊ฐ ์ •์ ๋“ค์€ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๊ฐ ์ •์ ๋“ค๊ณผ ๊ทธ ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค:

 

(์ •์  1, ์ •์  2, ๊ฑฐ๋ฆฌ)

 

 

๊ทธ๋Ÿฌ๋ฏ€๋กœ, ์ง€๋‚œ ํฌ์ŠคํŠธ์—์„œ ์‚ฌ์šฉ๋œ ๊ทธ๋ž˜ํ”„๋Š” ์ค‘์ฒฉ ๋ฆฌ์ŠคํŠธ๋‚˜ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค:

 

[[A, B, 3], [A, C, 5], [B, D, 4], [C, D, 7]]

 

๋ง‰์ƒ ์ด ๋ฐฉ์‹์€ A, B, C, D ์™€ ๊ฐ™์ด ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ ์ •์ ์„ ๋‚˜ํƒ€๋‚ด๋ฉด์„œ ๋™์‹œ์— ์ •์ˆ˜๋กœ ๊ฑฐ๋ฆฌ๋ฅผ ๋‚˜ํƒ€๋‚ด์•ผ ํ•ด์„œ ์ผ๊ด€๋œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค. ๋ฌผ๋ก  ๊ฑฐ๋ฆฌ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’๋„ ๋ฌธ์ž์—ด๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ์ ์€ ์–‘๋ฐฉํ–ฅ์ด ์•„๋‹ˆ๋ผ ๋‹จ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ๊ฑฐ๋ฆฌ๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. (A, B, 3) ์ด๋ผ๋Š” ์ •๋ณด๋Š” (B, A, 3) ๋ผ๋Š” ์ •๋ณด๋ฅผ ํ•จ์ถ•ํ•  ์ˆ˜ ์—†๋‹ค.

 

๊ทธ๋ž˜์„œ ๊ฐ ์ •์ ์„ ๋ช‡ ๋ฒˆ์งธ์ธ์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋กœ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ถ”์ƒํ™”ํ•œ ๋’ค์— ์ค‘์ฒฉ ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ๋ž˜ํ”„๋ฅผ ํ‘œํ˜„ํ–ˆ๋‹ค. ์ด์ œ ์ •์ˆ˜๋งŒ ์‚ฌ์šฉ๋˜๋ฉฐ, ๋‘ ์ •์  ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ„์‚ฐํ–ˆ์„ ๋•Œ ์–‘๋ฐฉํ–ฅ์—์„œ ๊ฐ™๋„๋ก ํ‘œํ˜„ํ•˜๊ธฐ๊ฐ€ ๋” ์‰ฌ์›Œ์กŒ๋‹ค.

 

[[0, 3, 5, -1], [3, 0, -1, 4], [5, -1, 0, 7], [-1, 4, 7, 0]]

 

๋ฆฌ์ŠคํŠธ ๋‚ด์˜ ๊ฐ ๋ฆฌ์ŠคํŠธ์˜ ์ธ๋ฑ์Šค๋Š” ๋ช‡ ๋ฒˆ์งธ ์ •์ ์˜ ์ •๋ณด์ธ์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ , ์ค‘์ฒฉ๋œ ๋ฆฌ์ŠคํŠธ์—์„œ์˜ ์ธ๋ฑ์Šค๋Š” ์ •์ ์—์„œ ๋‹ค๋ฅธ ๋ช‡ ๋ฒˆ์งธ ์ •์ ๊ณผ์˜ ๊ฑฐ๋ฆฌ์ธ์ง€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์œ„ ์ค‘์ฒฉ ๋ฆฌ์ŠคํŠธ์˜ 0๋ฒˆ์งธ ์ธ๋ฑ์Šค(์ •์  A)์˜ ๋ฆฌ์ŠคํŠธ [0, 3, 5, -1] ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค:

 

A ์™€ A ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋Š” 0์ด๋‹ค. (์ฒซ ๋ฒˆ์งธ (0๋ฒˆ์งธ ์ธ๋ฑ์Šค = A๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ) 0)
A ์™€ B ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋Š” 3์ด๋‹ค. (๋‘ ๋ฒˆ์งธ (1๋ฒˆ์งธ ์ธ๋ฑ์Šค = B ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ) 3)
A ์™€ C ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋Š” 5์ด๋‹ค. (์„ธ ๋ฒˆ์งธ (2๋ฒˆ์งธ ์ธ๋ฑ์Šค = C ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ) 5)
A ์™€ D ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋Š” ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค. (๋„ค ๋ฒˆ์งธ (3๋ฒˆ์งธ ์ธ๋ฑ์Šค = D ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ) -1)

 

์ด์ฒ˜๋Ÿผ ์ •์ ๋“ค ์‚ฌ์ด์— ๊ฑฐ๋ฆฌ๊ฐ€ ์—†๋Š” ๊ฒƒ์€ -1๋กœ ํ‘œํ˜„ํ•œ๋‹ค. ์ค‘์ฒฉ๋œ ๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด๋Š” ์ •์ ์˜ ๊ฐฏ์ˆ˜์™€ ๊ฐ™๋‹ค.

 

๐Ÿ“ ๊ทธ ์™ธ ํ•„์š”ํ•œ ์ž๋ฃŒ ๊ตฌ์กฐ๋“ค

๋‹ค์–‘ํ•œ ์ž๋ฃŒ ๊ตฌ์กฐ๋“ค์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ, ๊ทธ ์ค‘ ๊ฐ€์žฅ ์ ํ•ฉํ•œ ์ž๋ฃŒ ๊ตฌ์กฐ๋Š” ์‚ฌ์šฉ๋˜๋Š” ๋งฅ๋ฝ๊ณผ ์šฉ๋„๋ฅผ ๊ณ ๋ คํ•ด์„œ ๊ฒฐ์ •๋œ๋‹ค. ์ด์ œ ๋‹ค๋ฅธ ์ •๋ณด๋“ค์„ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ๋“ค์—๋Š” ๋ฌด์—‡์ด ์‚ฌ์šฉ๋˜์–ด์•ผ ํ•˜๊ณ , ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•  ๊ฒƒ์ธ์ง€ ์ƒ๊ฐํ•ด๋ณด์ž.

 

๋‚˜๋จธ์ง€ ์•Œ์•„์•ผ ํ•  ์ •๋ณด๋“ค๊ณผ ๊ฐ ์ •๋ณด๊ฐ€ ์ €์žฅ๋  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์„ ์ •๋ฆฌํ•ด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค:

 

์•Œ์•„์•ผ ๋˜๋Š” ์ •๋ณด ์ €์žฅ๋˜๋Š” ๋ฐฉ์‹
์‹œ์ž‘์ ์œผ๋กœ๋ถ€ํ„ฐ ๋ชจ๋“  ์ •์ ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๋“ค ๊ฐ๊ฐ์˜ ๊ฐ’ int[] dist ๋ณด๋‹ค๋Š” List<Integer> dist: ๋ณ€๋™์ด ์žฆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
ํ˜„์žฌ ๋ฐฉ๋ฌธ ์ค‘์ธ ์ •์  ๊ฐ’ int current : ์ •์ ์ด ๋ช‡ ๋ฒˆ์งธ์ธ์ง€์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค๋กœ ์ €์žฅํ•œ๋‹ค.
์ง€๊ธˆ๊นŒ์ง€ ๋ฐฉ๋ฌธ๋˜์–ด์ง„ ๋ชจ๋“  ์ •์ ๋“ค์˜ ๊ฐ’ List<Integer> visited: ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ณ€๋™์ด ์žฆ๋‹ค.
์•„์ง๊นŒ์ง€ ๋ฐฉ๋ฌธ๋˜์ง€ ์•Š์€ ๋ชจ๋“  ์ •์ ๋“ค์˜ ๊ฐ’ List<Integer> unvisited: ๋ณ€๋™์ด ์žฆ๋‹ค.

 

๋ง‰์ƒ ์ž‘์„ฑํ•ด๋ณด๋‹ˆ, ๋ฐฉ๋ฌธ๋˜์–ด์ง„ ์ •์ ๋“ค๊ณผ ๋ฐฉ๋ฌธ๋˜์–ด์ง€์ง€ ์•Š์€ ์ •์ ๋“ค์˜ ์ •๋ณด๋Š” ํ•˜๋‚˜๋กœ ํ•ฉ์น  ์ˆ˜ ์žˆ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ์–ด์ฐจํ”ผ ์ •์ ์€ ์ธ๋ฑ์Šค ๊ฐ’์„ ํ†ตํ•ด ํŒŒ์•…ํ•˜๋ฏ€๋กœ, ๋ถˆ๋ฆฐ ๋ฆฌ์ŠคํŠธ๋ฅผ ์„ ์–ธํ•ด ์ฒ˜์Œ์—๋Š” ๋ชจ๋‘ ๋ฐฉ๋ฌธ๋˜์–ด์ง€์ง€ ์•Š์•˜๋‹ค๋Š” ์˜๋ฏธ์—์„œ ๋ชจ๋“  ์ธ๋ฑ์Šค์˜ ๊ฐ’์„ false ๋กœ ์ดˆ๊ธฐํ™”ํ•˜๊ณ , ์ดํ›„ N๋ฒˆ์งธ ์ •์ ์ด ๋ฐฉ๋ฌธ๋˜์—ˆ์œผ๋ฉด ๋ฆฌ์ŠคํŠธ์˜ N๋ฒˆ์งธ๋ฅผ true๋กœ ๋ฐ”๊พธ๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ‘œ์˜ ๋งจ ์•„๋ž˜ ๋‘ ์…€์„ ํ•ฉ์ณ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณ€๊ฒฝํ•˜์˜€๋‹ค.

์•Œ์•„์•ผ ๋˜๋Š” ์ •๋ณด ์ €์žฅ๋˜๋Š” ๋ฐฉ์‹
์ง€๊ธˆ๊นŒ์ง€ ๋ฐฉ๋ฌธ๋˜์–ด์ง„ / ๋ฐฉ๋ฌธ๋˜์ง€ ์•Š์€ ๋ชจ๋“  ์ •์ ๋“ค์˜ ๊ฐ’ List<Boolean> visitedInfo

 

๐Ÿงฑ ๋™์ž‘ ์›๋ฆฌ

 

์ง€๊ธˆ๊นŒ์ง€ ์ •๋ฆฌํ•œ ๋ฐ”์— ์˜ํ•˜๋ฉด, ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์ง•์„ ๊ฐ€์ง„๋‹ค:

 

  • ์ค‘์ฒฉ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›๋Š”๋‹ค.
  • visitedInfo ๋ฆฌ์ŠคํŠธ์—์„œ ๊ฐ ์›์†Œ๋ฅผ ์ค‘์ฒฉ ๋ฆฌ์ŠคํŠธ์— ๋ช…์‹œ๋œ ์ •๋ณด์— ๋”ฐ๋ผ ๋ฐฉ๋ฌธํ•˜๋ฉด์„œ true ๋กœ ๋ฐ”๊พผ๋‹ค.
  • current ์—๋Š” ํ˜„์žฌ ๋ฐฉ๋ฌธ ์ •์ ์˜ ์ธ๋ฑ์Šค๋ฅผ ํ• ๋‹นํ•œ๋‹ค.
  • dist ๋ฆฌ์ŠคํŠธ๋Š” ํ˜„์žฌ ์›์†Œ์™€ ์ž ์žฌ์ ์œผ๋กœ ๋ฐ”๋€” ์ˆ˜ ์žˆ๋Š” ์›์†Œ์˜ ํฌ๊ธฐ ๋น„๊ต๋ฅผ ํ†ตํ•ด ์—…๋ฐ์ดํŠธ ์—ฌ๋ถ€๊ฐ€ ๊ฒฐ์ •๋œ๋‹ค.

 

๐Ÿ“Œ ๊ฒฐ๋ก 

์ด์ œ ์ €๋ฒˆ ํฌ์ŠคํŠธ์—์„œ ์„ค๋ช…ํ•œ ๋‹จ๊ณ„์— ๋”ฐ๋ผ ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•ด๋ณด์ž.

๋‹ค์Œ ํฌ์ŠคํŠธ์—์„œ๋Š” ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‹ค์ œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ๊ตฌํ˜„ํ•ด๋ณธ๋‹ค.

 

๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
ยซ   2025/01   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
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
๊ธ€ ๋ณด๊ด€ํ•จ