์ „์ฒด ๊ธ€ 159

์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ - ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Kruskal's Algorithm)

1. ๋ฌธ์ œ ๊ทธ๋ž˜ํ”„ ๋‚ด์˜ ๋ชจ๋“  ์ •์ ์„ ์ž‡๋Š” ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ ์ค‘ ๊ทธ ๊ฐ€์ค‘์น˜์˜ ํ•ฉ์ด ์ตœ์†Œ๊ฐ€ ๋˜๋Š” ํŠธ๋ฆฌ๊ฐ€ ์ตœ์†Œ ์‹ ์žฅ(์ŠคํŒจ๋‹) ํŠธ๋ฆฌ ์œ„ ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ธ ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ 2. ๋ฌธ์ œ ์„ค๊ณ„ ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋Š” ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ฐ€์ค‘์น˜๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ„์„ ๋ถ€ํ„ฐ ๋‘ ์ •์ ์„ ์ด์–ด๋‚˜๊ฐ€๋ฉด์„œ, ํŠธ๋ฆฌ๋Š” ์‚ฌ์ดํด์ด ์—†๋Š” ๊ทธ๋ž˜ํ”„์ด๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์ดํด์ด ์—†์–ด์•ผ ํ•จ ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐ„์„ ์˜ ๊ฐ€์ค‘์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ทธ๋ž˜ํ”„๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ณ  ์‚ฌ์ดํด์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํŒŒ์•…ํ•ด์•ผ ํ•จ ์‚ฌ์ดํด์ด ๋ฐœ์ƒํ•˜๋ ค๋ฉด, ๊ฐ™์€ ํŠธ๋ฆฌ๋‚ด์˜ ์ •์ ์„ ์ด์„ ๊ฒฝ์šฐ ์‚ฌ์ดํด์ด ๋ฐœ์ƒํ•˜๋ฏ€๋กœ, ํ˜„์žฌ ๋‘ ์ •์ ์ด ๊ฐ™์€ ํŠธ๋ฆฌ๋‚ด์— ์†ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒ€์‚ฌํ•ด์•ผ ํ•˜๋ฉฐ, ๊ฐ™์€ ํŠธ๋ฆฌ๋‚ด์— ์—†์„ ์‹œ ๊ฐ™์€ ํŠธ๋ฆฌ๋กœ ๋ฌถ์–ด์ฃผ๋Š” ์ž‘์—…์ด ํ•„์š”ํ•จ ์œ„ ๋‘๊ฐ€์ง€ ์ž‘์—…์„ ์œ„ํ•ด์„œ Disjo..

ํŒŒํ‹ฐ

1. ๋ฌธ์ œ 2. ์ž…์ถœ๋ ฅ 3. ์ž…์ถœ๋ ฅ ์˜ˆ์‹œ 4. ๋ฌธ์ œ ์„ค๊ณ„ ๋ฌธ์ œ์—์„œ ์–‘๋ฐฉํ–ฅ ๋„๋กœ๊ฐ€ ์•„๋‹˜์— ์ฃผ์˜ํ•˜๋ผ๋Š” ์ ์„ ๊ณ ๋ คํ•˜์—ฌ, ๋‹จ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ๊ทธ ๊ทธ๋ž˜ํ”„์— ๋Œ€ํ•œ ์—ญ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ตฌ์„ฑํ•œ ํ›„ ์ฒ ์ˆ˜๋„ค ์ง‘์— ๋Œ€ํ•˜์—ฌ ๋‘ ๊ทธ๋ž˜ํ”„์— ๋Œ€ํ•ด ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•˜๊ฒŒ ๋˜๋ฉด, ๋ชจ๋“  ๋งˆ์„ ์‚ฌ๋žŒ๋“ค์ด ์ฒ ์ˆ˜๋„ค ์ง‘์— ์˜ค๊ณ  ๊ฐ€๋Š” ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๋ชจ๋‘ ๊ตฌํ•  ์ˆ˜ ์žˆ์Œ ๋”ฐ๋ผ์„œ ๋‘ ๊ทธ๋ž˜ํ”„์— ๋Œ€ํ•œ ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•œ ํ›„, ๋‘ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์›์†Œ์˜ ํ•ฉ์„ ๋”ํ•ด์คŒ์œผ๋กœ์จ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ 5. ์ „์ฒด ์ฝ”๋“œ //MARK: - ํŒŒํ‹ฐ //MARK: - Framework import Foundation //MARK: - Type struct Graph { //MARK: - Property var edges, costs: [Int] //M..

ํŠน์ • ์ตœ๋‹จ๊ฑฐ๋ฆฌ

1. ๋ฌธ์ œ 2. ์ž…์ถœ๋ ฅ 3. ์ž…์ถœ๋ ฅ ์˜ˆ์‹œ 4. ๋ฌธ์ œ ์„ค๊ณ„ ๊ฐ€์ค‘์น˜๊ฐ€ ์žˆ๋Š” ๊ทธ๋ž˜ํ”„์—์„œ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์œ„ ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ๋Š” ํŠน์ดํ•˜๊ฒŒ ์‹œ์ž‘์ ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ํŠน์ • ๋‘ ์ •์ ์„ ๋ฌด์กฐ๊ฑด ๊ฑฐ์ณ์„œ ๋„์ฐฉ์ง€์ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•ด์•ผ ํ•จ ๋”ฐ๋ผ์„œ ๊ผญ ๊ฑฐ์ณ์•ผ ํ•˜๋Š” ๋‘ ์ •์ ์„ A, B๋กœ ๊ฐ€์ •ํ•˜๋ฉด, ์‹œ์ž‘์  -> A -> B -> ๋„์ฐฉ์ , ์‹œ์ž‘์  -> B -> A -> ๋„์ฐฉ์  ๋‘ ๊ฐ€์ง€์˜ ๊ฒฝ์šฐ๋ฅผ ๋ชจ๋‘ ๊ณ ๋ คํ•ด๋ณด๊ณ , ๊ทธ ์ค‘ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•จ์œผ๋กœ์จ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ณ , ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด 6๋ฒˆ ์ ์šฉํ•ด์•ผํ•จ์„ ์•Œ ์ˆ˜ ์žˆ์Œ 5. ์ „์ฒด ์ฝ”๋“œ //MARK: - ํŠน์ • ์ตœ๋‹จ๊ฑฐ๋ฆฌ //MARK: - Framework import Foundation //MARK: - Type struct Graph { ..

์ตœ๋‹จ๊ฑฐ๋ฆฌ

1. ๋ฌธ์ œ 2. ์ž…์ถœ๋ ฅ 3. ์ž…์ถœ๋ ฅ ์˜ˆ์‹œ 4. ๋ฌธ์ œ ์„ค๊ณ„ ๊ทธ๋ž˜ํ”„์˜ ๊ฐ„์„ ์˜ ๊ฐ€์ค‘์น˜๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— BFS๋กœ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•ด๋„ ๋˜์ง€๋งŒ, ๋‹ค์ต์ŠคํŠธ๋ผ๋ฅผ ์ด์šฉํ•ด์„œ ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ ๊ฐ ๊ฐ„์„ ์˜ ๊ฐ€์ค‘์น˜๋ฅผ 1๋กœ ๊ฐ€์ •ํ•˜๊ณ , ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•˜์—ฌ ์‹œ์ž‘์ ๋ถ€ํ„ฐ ๋„์ฐฉ์ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•จ์œผ๋กœ์จ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•จ 5. ์ „์ฒด ์ฝ”๋“œ //MARK: - ์ตœ๋‹จ๊ฑฐ๋ฆฌ //MARK: - Framework import Foundation //MARK: - Type struct Graph { //MARK: - Property var edges: [Int] var costs: [Int] //MARK: - Initializer init() { self.edges = [] self.costs = [] } } //MARK: - Var..

์ตœ๋‹จ ๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Dijkstra's Algorithm)

1. ๋ฌธ์ œ ๊ฐ„์„ ์˜ ๊ฐ€์ค‘์น˜๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ทธ๋ž˜ํ”„์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ 2. ๋ฌธ์ œ ์„ค๊ณ„ ์ฒ˜์Œ ๊ฐ ๋…ธ๋“œ์— ๋Œ€ํ•œ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ํฐ ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™” ํ•˜๊ณ , ์‹œ์ž‘์ ์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ ๊ฐ’์„ 0์œผ๋กœ ์‹œ์ž‘ํ•˜๊ณ , ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌ๋ฅผ ํ•œ ํ›„ ์‹œ์ž‘์ ์œผ๋กœ๋ถ€ํ„ฐ์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ ๊ฐ’๊ณผ ์ธ์ ‘ํ•œ ์ •์ ๋“ค์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ์˜ ํ•ฉ ์ค‘ ๋” ์ž‘์€ ๊ฐ’์œผ๋กœ ์ €์žฅ ์ดํ›„ ๋‹ค์‹œ ์•„์ง ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ •์ ์— ๋Œ€ํ•œ ์ตœ๋‹จ ๊ฒฝ๋กœ ๊ฐ’์˜ ์ตœ์†Œ๊ฐ’์„ ์ฐพ๊ณ  ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌ๋ฅผ ํ•จ ์œ„ ๊ณผ์ •์„ ๋ชจ๋“  ์ •์ ์— ๋Œ€ํ•ด ๋ฐ˜๋ณตํ•˜๊ฒŒ ๋˜๋ฉด ์‹œ์ž‘์ ์œผ๋กœ๋ถ€ํ„ฐ ๋ชจ๋“  ์ •์ ์— ๋Œ€ํ•œ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ์Œ 3. ์ „์ฒด ์ฝ”๋“œ //MARK: - ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ //MARK: - Framework import Foundation //MARK: - Type struct Graph { //MARK: - Proper..