์ „์ฒด ๊ธ€ 159

์›œ ๋ฐ”์ด๋Ÿฌ์Šค_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..

๊ทธ๋ž˜ํ”„ ๊ตฌํ˜„ : ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ

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

๊ทธ๋ž˜ํ”„ ๊ตฌํ˜„ : ์ธ์ ‘ ํ–‰๋ ฌ

1. ๋ฌธ์ œ ๊ทธ๋ž˜ํ”„ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ธ์ ‘ ํ–‰๋ ฌ๋กœ ๊ตฌํ˜„ 2. ๋ฌธ์ œ ์„ค๊ณ„ ๊ทธ๋ž˜ํ”„๋ฅผ ์ธ์ ‘ ํ–‰๋ ฌ๋กœ ๊ตฌํ˜„ํ•˜๊ฒŒ ๋˜๋ฉด, ๋‘ ์ •์ ์ด ์—ฐ๊ฒฐ๋ผ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ O(1)๋งŒ์— ์•Œ ์ˆ˜ ์žˆ์Œ ํ•˜์ง€๋งŒ, ๋ฌด์กฐ๊ฑด ์ •์ ์˜ ๊ฐœ์ˆ˜์˜ ์ œ๊ณฑ๊ฐœ ๋งŒํผ์˜ 2์ฐจ์› ๋ฐฐ์—ด๋กœ ๋ถˆํ•„์š”ํ•œ ๊ณต๊ฐ„์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํŠน์ • ์ •์ ๊ณผ ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ์ •์ ์„ ๊ตฌํ•˜๋Š”๋ฐ O(์ •์ ์˜ ๊ฐœ์ˆ˜)๋งŒํผ ๊ฑธ๋ฆฌ๊ฒŒ ๋จ 3. ์ „์ฒด ์ฝ”๋“œ //MARK: - ๊ทธ๋ž˜ํ”„ ๊ตฌํ˜„ : ์ธ์ ‘ ํ–‰๋ ฌ //MARK: - Framework import Foundation //MARK: - Function func isConnected(_ myGraph: [[Int]], _ x: Int, _ y: Int) -> Bool { //Time Complexity : O(1) return myGraph[x][y] == 1 ? true :..