Swift Data Structure And Algorithm/Graph Algorithm 22

ํญ๋ฐœ๋ฌผ ์„ค์น˜

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

SCC

1. ๋ฌธ์ œ 2. ์ž…์ถœ๋ ฅ 3. ์ž…์ถœ๋ ฅ ์˜ˆ์‹œ 4. ๋ฌธ์ œ ์„ค๊ณ„ ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ ๊ฐ™์€ ๊ทธ๋ฃน์˜ ์ •์ ์ด๋ผ๋ฉด ์„œ๋กœ ์˜ค๊ณ ๊ฐˆ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋กœ๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ทธ๋ฃน๋ผ๋ฆฌ ๊ทธ๋ž˜ํ”„๋ฅผ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์„ SCC(Strongly Connected Component)๋ผ๊ณ  ํ•˜๋ฉฐ, ์ด๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€ํ‘œ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ฝ”์‚ฌ๋ผ์ฃผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋”ฐ๋ผ์„œ ์ฃผ์–ด์ง„ ๊ทธ๋ž˜ํ”„๋ฅผ ์ •๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์™€ ์—ญ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„ ๋‘๊ฐ€์ง€๋กœ ๊ตฌ์„ฑํ•˜๊ณ , ์ •๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์— ๋Œ€ํ•ด DFS๋ฅผ ์ ์šฉํ•˜์—ฌ ๋น ์ ธ๋‚˜์˜ค๋Š” ์ˆœ์„œ๋Œ€๋กœ ๊ทธ ์ •์ ์˜ ๋ฒˆํ˜ธ๋ฅผ ๊ธฐ๋กํ•˜๊ณ , ๊ฐ€์žฅ ๋‚˜์ค‘์— ๋น ์ ธ๋‚˜์˜จ ์ •์ ์ด ์—ญ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ๋Š” ๋‹จ๋ง๋…ธ๋“œ๊ฐ€ ๋˜๋ฏ€๋กœ, ์—ญ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์— ๋Œ€ํ•ด ๊ฐ€์žฅ ๋‚˜์ค‘์— ๋น ์ ธ๋‚˜์˜จ ์ •์ ๋ถ€ํ„ฐ ๋‹ค์‹œ DFS๋ฅผ ์ ์šฉํ•˜๊ฒŒ ๋˜๋ฉด SCC๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ์Œ ๋”ฐ๋ผ์„œ O(V + E)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ 5. ์ „์ฒด ์ฝ”๋“œ //MARK..

์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ - ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜(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..

๋ชฉ์ˆ˜์˜ ๋ฏธ๋กœ ํƒˆ์ถœ

1. ๋ฌธ์ œ 2. ์ž…์ถœ๋ ฅ 3. ์ž…์ถœ๋ ฅ ์˜ˆ์‹œ 4. ๋ฌธ์ œ ์„ค๊ณ„ ์œ„ ๋ฌธ์ œ๋Š” ์ด์ „ ๋ฏธ๋กœ ์ฐพ๊ธฐ ๋ฌธ์ œ๋ฅผ ์‘์šฉํ•œ ๋ฌธ์ œ๋กœ, ์‹œ์ž‘์ ์—์„œ ๊ฐ ๋ฒฝ๊นŒ์ง€์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ, ๋„์ฐฉ์ง€์ ์—์„œ ๊ฐ ๋ฒฝ๊นŒ์ง€์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋ฅผ ๊ฐ๊ฐ ๋ฐฐ์—ด์— ์ €์žฅํ•˜๊ณ , ๋‘ ๋ฐฐ์—ด์— ๋Œ€ํ•ด ๋ฒฝ์— ํ•ด๋‹น๋˜๋Š” ๊ฐ’์˜ ํ•ฉ์˜ ์ตœ์†Œ๊ฐ’์„ ์ฐพ์Œ์œผ๋กœ์จ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ ์ฃผ์˜ํ•  ์ ์€, ๊ฐ๊ฐ์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด BFS๋ฅผ ์ง„ํ–‰ํ•  ๋•Œ, ๋ฏธ๋กœ์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๊ณ  ๋ฐฉ๋ฌธ ์—ฌ๋ถ€๋ฅผ ๊ฒ€์‚ฌํ•˜๋ฉด์„œ ํƒ์ƒ‰ํ•˜๋˜, ๋ฒฝ์— ํ•ด๋‹น๋˜๋Š” ๋ถ€๋ถ„์€ ๋ฐฉ๋ฌธํ•˜๋ฉด ์•ˆ๋จ ์œ„ ๊ณผ์ •์„ ํ†ตํ•ด ๊ฐ๊ฐ์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๊ณ , ๋‘ ๋ฐฐ์—ด์˜ ํ•ฉ์˜ ์ตœ์†Œ๊ฐ’์„ ์ฐพ๊ธฐ ์œ„ํ•ด ์™„์ „ํƒ์ƒ‰์„ ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ด ๋•Œ ํŠน์ • ๋ฒฝ๊นŒ์ง€์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ ๊ฐ’์ด 0์ผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ด์— ๋Œ€ํ•œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•จ ๋”ฐ๋ผ์„œ O(N * M)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ 5. ์ „์ฒด ์ฝ”๋“œ /..

์ „์—ผ๋ณ‘

1. ๋ฌธ์ œ 2. ์ž…์ถœ๋ ฅ 3. ์ž…์ถœ๋ ฅ ์˜ˆ์‹œ 4. ๋ฌธ์ œ ์„ค๊ณ„ ์œ„ ๋ฌธ์ œ๋„ * 2 ์—ฐ์‚ฐ, / 3 ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ๊ฐ ๋…ธ๋“œ๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋ฉด BFS๋ฅผ ์ ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ K๋Š” 1์ด์ƒ ๊ฐ’์ด๋ฏ€๋กœ / 3 ์—ฐ์‚ฐ ์‹œ 0์ด ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— 0๋ฒˆ ์œ„์น˜๋Š” ์ด๋ฏธ ๋ฐฉ๋ฌธํ–ˆ๋‹ค๊ณ  ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผ ํ•จ * 2 ์—ฐ์‚ฐ ์‹œ ๋งˆ์„์˜ ๊ฐœ์ˆ˜๋ฅผ ๋„˜์–ด๊ฐ€๋ฉด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋„ ํ•„์š”ํ•จ ์œ„ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด์„œ ์ธ์ ‘ํ•œ ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•  ๋•Œ๋งˆ๋‹ค count ๊ฐ’์„ ์ฆ๊ฐ€์‹œ์ผœ ์ฃผ๊ณ , ํ•ด๋‹น count ๊ฐ’์ด K๋ฒˆ ๋งˆ์„๋ถ€ํ„ฐ ์ „์—ผ๋ณ‘์ด ํผ์ง„ ๋งˆ์„์˜ ๊ฐœ์ˆ˜์ด๋ฏ€๋กœ ์ „์ฒด ๋งˆ์„์˜ ์ˆ˜(N) - count๋ฅผ ํ†ตํ•ด ์ „์—ผ๋ณ‘์ด ํผ์ง„ ๋งˆ์„์„ ์ œ์™ธ์‹œ์ผœ ์คŒ์œผ๋กœ์จ ์ „์—ผ๋ณ‘์ด ํผ์ง€์ง€ ์•Š์€ ๋งˆ์„์˜ ์ˆ˜๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ์Œ 5. ์ „์ฒด ์ฝ”๋“œ //MARK: - ์ „์—ผ๋ณ‘ //MARK: - Framework i..

์ด์ƒํ•œ ๊ณ„์‚ฐ๊ธฐ

1. ๋ฌธ์ œ 2. ์ž…์ถœ๋ ฅ 3. ์ž…์ถœ๋ ฅ ์˜ˆ์‹œ 4. ๋ฌธ์ œ ์„ค๊ณ„ ์œ„ ๋ฌธ์ œ๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ๋„ˆ๋น„์šฐ์„ ํƒ์ƒ‰์„ ์‚ฌ์šฉํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ๋– ์˜ฌ๋ฆฌ๋Š”๊ฒŒ ํž˜๋“ค์—ˆ๋˜ ๋ฌธ์ œ ๋‹จ์ˆœํžˆ * 2 ์—ฐ์‚ฐ๊ณผ / 3 ์—ฐ์‚ฐ์„ ๋ฐ˜๋ณตํ•ด์„œ ์ง„ํ–‰ํ•˜๋‹ค๋ณด๋ฉด ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ ๋˜, * 2 ์—ฐ์‚ฐ ์‹œ 5์ž๋ฆฌ ์ด์ƒ ๋„˜์–ด๊ฐ€๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ด์ฃผ์–ด์•ผ ํ•จ ์œ„ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด์„œ ํ˜„์žฌ ๊ฐ’์—์„œ * 2 ํ•œ ์œ„์น˜, / 3 ํ•œ ์œ„์น˜๋ฅผ ๊ฐ๊ฐ์˜ ๋…ธ๋“œ๋กœ ๋ณด๊ณ  ํ•ด๋‹น ์œ„์น˜์— ๋Œ€ํ•ด BFS๋ฅผ ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜๋ฉด ๋ฏธ๋กœ ์ฐพ๊ธฐ ๋ฌธ์ œ์—์„œ ๊ฑฐ๋ฆฌ๋ฅผ ์ €์žฅํ•˜๋“ฏ์ด ์ด์ „ ๋ฒ„ํŠผ ํšŸ์ˆ˜ + 1์„ ๊ฐ๊ฐ์˜ ์œ„์น˜์— ๋ˆ„์ ํ•˜๊ณ , ์ตœ์ข…์ ์œผ๋กœ ์›ํ•˜๋Š” ๊ฐ’์˜ ์œ„์น˜์˜ ๋ฒ„ํŠผ ํšŸ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•จ์œผ๋กœ์จ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ BFS๋กœ ํƒ์ƒ‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ์œ„์น˜(์—ฐ์‚ฐ ๊ฒฐ๊ณผ)๋ฅผ ์ตœ์ดˆ์— ๋ฐœ๊ฒฌํ–ˆ์„ ๋•Œ ๋ˆ„์  ๊ฐ’์ด ์ตœ์†Ÿ๊ฐ’์ž„์ด ๋ณด์žฅ๋˜๊ณ , ๋ฐฉ๋ฌธ ์—ฌ๋ถ€๋ฅผ ๊ฒ€์‚ฌํ•˜๋ฏ€๋กœ ๋‘๋ฒˆ ์ด์ƒ..