Swift Data Structure And Algorithm/Graph Algorithm 22

๋‹จ์ง€ ๋ฒˆํ˜ธ ๋ถ™์ด๊ธฐ_BFS

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

๋ฏธ๋กœ ์ฐพ๊ธฐ

1. ๋ฌธ์ œ 2. ์ž…์ถœ๋ ฅ 3. ์ž…์ถœ๋ ฅ ์˜ˆ์‹œ 4. ๋ฌธ์ œ ์„ค๊ณ„ ๊ฐ€์ค‘์น˜๊ฐ€ ์—†๋Š” ๊ทธ๋ž˜ํ”„์—์„œ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ BFS ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ ์ ˆํ•จ DFS๋„ ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋ฅผ ์ฐพ์„ ์ˆ˜๋Š” ์žˆ์ง€๋งŒ, ๊นŠ์ด์šฐ์„ ํƒ์ƒ‰์€ ๊ณ„์† ํ•ด์„œ ๋‚ฎ์€ ๋ ˆ๋ฒจ๋กœ ํƒ์ƒ‰ํ•˜๋ฏ€๋กœ ์ ์ ˆํ•˜์ง€ ์•Š์Œ ์ธ์ ‘ํ•œ ๋…ธ๋“œ๋“ค๋ถ€ํ„ฐ ์ฐจ๋ก€๋กœ ๋ฐฉ๋ฌธํ•˜๋Š” ๋„ˆ๋น„์šฐ์„ ํƒ์ƒ‰์œผ๋กœ ๋ฐฉ๋ฌธํ•  ๋•Œ๋งˆ๋‹ค ๊ฑฐ๋ฆฌ๋ฅผ ์ด์ „ ๋…ธ๋“œ์˜ ๊ฑฐ๋ฆฌ์— + 1 ์”ฉ ๋ˆ„์ ์‹œํ‚ค๊ณ , ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ชฉ์ ์ง€์˜ ๊ฑฐ๋ฆฌ๋ฅผ ์ถœ๋ ฅํ•จ์œผ๋กœ์จ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ 5. ์ „์ฒด ์ฝ”๋“œ //MARK: - ๋ฏธ๋กœ ์ฐพ๊ธฐ //MARK: - Framework import Foundation //MARK: - Type struct Node { //MARK: - Property var x, y: Int //MARK: - Initializer init(_..

์›œ ๋ฐ”์ด๋Ÿฌ์Šค_BFS

1. ๋ฌธ์ œ 2. ์ž…์ถœ๋ ฅ 3. ์ž…์ถœ๋ ฅ ์˜ˆ์‹œ 4. ๋ฌธ์ œ ์„ค๊ณ„ ์ „ํ˜•์ ์ธ ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ ๋ฌธ์ œ๋กœ DFS or BFS๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ ์ธ์ ‘ํ•œ ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•  ๋•Œ ๋งˆ๋‹ค, count ๊ฐ’์„ ์ฆ๊ฐ€์‹œ์ผœ์คŒ์œผ๋กœ์จ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ณ , O(N + M)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ 5. ์ „์ฒด ์ฝ”๋“œ //MARK: - ์›œ ๋ฐ”์ด๋Ÿฌ์Šค - BFS //MARK: - Framework import Foundation //MARK: - Type struct Graph { var edges: [Int] = [] } //MARK: - Variable var graph: [Graph] = [] var visited: [Bool] = [] //MARK: - Function func bfs(_ start: Int) -> Int { va..

์ด๋ถ„ ๊ทธ๋ž˜ํ”„ ํŒ๋ณ„_BFS

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

2์ƒ‰์น ํ•˜๊ธฐ_BFS

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

๊นŠ์ด์šฐ์„ ํƒ์ƒ‰๊ณผ ๋„ˆ๋น„์šฐ์„ ํƒ์ƒ‰

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

๋‹จ์ง€ ๋ฒˆํ˜ธ ๋ถ™์ด๊ธฐ_DFS

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

์›œ ๋ฐ”์ด๋Ÿฌ์Šค_DFS

1. ๋ฌธ์ œ 2. ์ž…์ถœ๋ ฅ 3. ์ž…์ถœ๋ ฅ ์˜ˆ์‹œ 4. ๋ฌธ์ œ ์„ค๊ณ„ ์ „ํ˜•์ ์ธ ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ ๋ฌธ์ œ๋กœ DFS or BFS๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ ์ธ์ ‘ํ•œ ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•  ๋•Œ ๋งˆ๋‹ค, count ๊ฐ’์„ ์ฆ๊ฐ€์‹œ์ผœ์คŒ์œผ๋กœ์จ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ณ , O(N + M)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ 5. ์ „์ฒด ์ฝ”๋“œ //MARK: - ์›œ ๋ฐ”์ด๋Ÿฌ์Šค //MARK: - Framework import Foundation //MARK: - Type struct Graph { //MARK: - Property var edges: [Int] //MARK: - Initializer init() { self.edges = [] } } //MARK: - Variable var graph: [Graph] = [] var visited: [Bool] =..

์ด๋ถ„ ๊ทธ๋ž˜ํ”„ ํŒ๋ณ„_DFS

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

2์ƒ‰์น ํ•˜๊ธฐ_DFS

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