-
[Algorithm] BFS & DFSAlgorithm 2022. 3. 15. 09:24
BFS (Breadth First Search)
- ๋ค์ฐจ์ ๋ฐฐ์ด์์ ๊ฐ ์นธ์ ๋ฐฉ๋ฌธํ ๋ ๋๋น๋ฅผ ์ฐ์ ์ผ๋ก ๋ฐฉ๋ฌธํ๋ ์๊ณ ๋ฆฌ์ฆ
- ๋ฃจํธ ๋ ธ๋ (ํน์ ๋ค๋ฅธ ์์์ ๋ ธ๋)์์ ์์ํด์ ์ธ์ ํ ๋ ธ๋๋ฅผ ๋จผ์ ํ์ํ๋ ๋ฐฉ๋ฒ
- Queue๋ฅผ ์ด์ฉํ์ฌ ๊ตฌํ
- ๋ ๋ ธ๋ ์ฌ์ด์ ์ต๋จ ๊ฒฝ๋ก ํน์ ์์์ ๊ฒฝ๋ก๋ฅผ ์ฐพ๊ณ ์ถ์ ๋ ์ฌ์ฉ
- ์๊ฐ ๋ณต์ก๋ O(N)
BFS ์งํ ๊ณผ์
1. ์์ํ๋ ์นธ์ ํ์ ๋ฃ๊ณ ๋ฐฉ๋ฌธํ๋ค๋ ํ์๋ฅผ ๋จ๊ธด๋ค.
2. ํ์์ ์์๋ฅผ ๊บผ๋ด์ ํด๋น ์นธ์ ์ํ์ข์ฐ๋ก ์ธ์ ํ ์นธ์ ๋ํด ๋ค์ 3๋ฒ์ ์งํํ๋ค.
3. ํด๋น ์นธ์ ์ด์ ์ ๋ฐฉ๋ฌธํ๋ค๋ฉด ์๋ฌด๊ฒ๋ ํ์ง ์๊ณ , ์ฒ์์ผ๋ก ๋ฐฉ๋ฌธํ๋ค๋ฉด ๋ฐฉ๋ฌธํ๋ค๋ ํ์๋ฅผ ๋จ๊ธฐ๊ณ ํด๋น ์นธ์ ํ์ ๋ฃ๋๋ค.
4. ํ๊ฐ ๋น ๋๊น์ง 2๋ฒ์ ๋ฐ๋ณตํ๋ค.
⇒ ๋ชจ๋ ์นธ์ด ํ์ 1๋ฒ์ฉ ๋ค์ด๊ฐ๋ฏ๋ก ์๊ฐ ๋ณต์ก๋๋ ์นธ์ด N๊ฐ์ผ ๋ O(N)์ด๋ค.
DFS (Depth First Search)
- ๋ฃจํธ ๋ ธ๋ (ํน์ ๋ค๋ฅธ ์์์ ๋ ธ๋)์์ ์์ํด์ ๋ค๋ฅธ ๋ถ๊ธฐ (branch)๋ก ๋์ด๊ฐ๊ธฐ ์ ์ ํด๋น ๋ถ๊ธฐ๋ฅผ ์๋ฒฝํ๊ฒ ํ์ํ๋ ๋ฐฉ๋ฒ
- ์ฌ๊ท๋ฅผ ์ด์ฉํ์ฌ ๊ตฌํ
- ๋ชจ๋ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๊ณ ์ ํ๋ ๊ฒฝ์ฐ ์ฌ์ฉ
- ์๊ฐ ๋ณต์ก๋ O(N)
DFS ์งํ ๊ณผ์
1. ์์ํ๋ ์นธ์ ์คํ์ ๋ฃ๊ณ ๋ฐฉ๋ฌธํ๋ค๋ ํ์๋ฅผ ๋จ๊ธด๋ค.
2. ์คํ์์ ์์๋ฅผ ๊บผ๋ด์ ํด๋น ์นธ์ ์ํ์ข์ฐ๋ก ์ธ์ ํ ์นธ์ ๋ํด ๋ค์ 3๋ฒ์ ์งํํ๋ค.
3. ํด๋น ์นธ์ ์ด์ ์ ๋ฐฉ๋ฌธํ๋ค๋ฉด ์๋ฌด๊ฒ๋ ํ์ง ์๊ณ , ์ฒ์์ผ๋ก ๋ฐฉ๋ฌธํ๋ค๋ฉด ๋ฐฉ๋ฌธํ๋ค๋ ํ์๋ฅผ ๋จ๊ธฐ๊ณ ํด๋น ์นธ์ ์คํ์ ๋ฃ๋๋ค.
4. ์คํ์ด ๋น ๋๊น์ง 2๋ฒ์ ๋ฐ๋ณตํ๋ค.
⇒ ๋ชจ๋ ์นธ์ด ์คํ์ 1๋ฒ์ฉ ๋ค์ด๊ฐ๋ฏ๋ก ์๊ฐ ๋ณต์ก๋๋ ์นธ์ด N๊ฐ์ผ ๋ O(N)์ด๋ค.

์ถ์ฒ ๋ฐํน๋ ๋ธ๋ก๊ทธ 'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm] ํฌ ํฌ์ธํฐ ์๊ณ ๋ฆฌ์ฆ (Two Pointer Algorithm) (0) 2023.05.02 [Algorithm] ๋ฐฑ์ค 2003 ์๋ค์ ํฉ 2 (C++) (0) 2023.05.01 [Algorithm] ํ๋ก๊ทธ๋๋จธ์ค ์ ๊ณ ๊ฒฐ๊ณผ ๋ฐ๊ธฐ Level1 (Swift) (0) 2022.02.06 [Algorithm] ํ๋ก๊ทธ๋๋จธ์ค [์นด์นด์ค ์ธํด] ํคํจ๋ ๋๋ฅด๊ธฐ Level1 (Swift) (0) 2022.02.06 [Algorithm] ์๋ผํ ์คํ ๋ค์ค์ ์ฒด (Swift/C++) (0) 2022.02.01