๋ฐ์ํ
Notice
Recent Posts
Recent Comments
Link
| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- ์ธํผ
- ์คํ
- ๊ทธ๋ํ
- Python
- BFS
- ๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ
- DFS
- ์นด์นด์ค
- ์๊ณ ๋ฆฌ์ฆ
- SWEA
- boj
- Backjoon
- DP
- algorithm
- ๋ฐฑ์ค
- sort
- ์ผ์ฑ
- ์ฝํ
- kakao
- SSAFY
- SW์ญ๋ํ ์คํธ
- ํํ
- ์ฝ๋ฉํ ์คํธ
- ํ๋ก๊ทธ๋๋จธ์ค
- ์๋ฃ๊ตฌ์กฐ
- ์์ ํ์
- ์๋ฐ์คํฌ๋ฆฝํธ
- ํ์ด์ฌ
- javascript
- Blind
Archives
- Today
- Total
๋ง์ํ
๋๋น ์ฐ์ ํ์(Breath First Search, BFS) ๋ณธ๋ฌธ
๋ฐ์ํ

๐ ๋๋น ์ฐ์ ํ์(BFS) ์ด๋
- ๋๋น๋ฅผ ์ฐ์ ์ผ๋ก ํ์ฌ ํ์์ ์ํํ๋ ์๊ณ ๋ฆฌ์ฆ
- ์ต๋จ๊ฒฝ๋ก(์ต๋จ๊ธธ์ด)๋ฅผ ์ฐพ์ ๋ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
- ํ์ ๊ทธ๋ํ๋ก ํด๊ฒฐํ๋ค. (ํ์ด์ฌ์์๋ ๋ฐํฌ(deque)๋ฅผ ์ฐ๋ฉด ์๋๊ฐ ๋น ๋ฆ)
๐ ๋๋น ์ฐ์ ํ์(BFS) ๊ตฌํ
from collections import deque
# ์ธ์ ๋ฆฌ์คํธ
# ๋
ธ๋: 1,2,3,4,5,6,7
n = 7
adj = {x: [] for x in range(1, n + 1)}
edges = [
[1, 2],
[1, 3],
[2, 4],
[2, 5],
[3, 6],
[3, 7]
]
# ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ์ด๋ฏ๋ก ๋ฐ๋์ชฝ๋ ์ฑ๋ฆฝ
for edge in edges:
s, e = edge
adj[s].append(e)
adj[e].append(s)
print(adj)
# bfs ๋ queue๋ฅผ ์ฌ์ฉํ๋ค. ์๋๊ฐ ๋น ๋ฅธ๋ฐํฌ๋ฅผ ์ฌ์ฉ
q = deque()
q.append(1)
visited = [False] * (n + 1) # ๊ฐ ์ธ๋ฑ์ค ๋ฐฉ๋ฌธํ ์ ์ด ์๋์ง
visited[1] = True
visited_seq = []
while q:
c = q.popleft() # ํ ๊ตฌ์กฐ ์ด๋ฏ๋ก ๊ฐ์ฅ ์์์์(์ ์ผ ์ฒ์์ ๋ค์ด์จ)๋ฅผ ๊บผ๋ธ๋ค.
for neighbor in adj[c]: # c์ ์ด์ ๋
ธ๋(c์์ ๋ฐ๋ก ๊ฐ ์ ์๋ ๊ณณ)
if not visited[neighbor]: # ๋ฐฉ๋ฌธํ์ ์ด ์์ผ๋ฉด
q.append(neighbor) # ํ์ ๋ฃ์ด์ฃผ๊ณ
visited[neighbor] = True # ๋ฐฉ๋ฌธ ํ์
visited_seq.append(c) # ์ฌ๊ธด ์์จ์ค๋ ๋๋ค. ๋จ์ง ๋ฐฉ๋ฌธ์์๋ฅผ ๋ํ๋ด๊ธฐ ์ํ ๊ฒ
print(f'๋ฐฉ๋ฌธ์์ {visited_seq}')
๋ฐ์ํ
'CS > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ์๋ก์ ์งํฉ(Disjoint-set) (0) | 2020.09.29 |
|---|---|
| ๊น์ด ์ฐ์ ํ์(Depth First Search, DFS) (0) | 2020.09.28 |
| ๊ณ์ ์ ๋ ฌ(counting sort) (0) | 2020.09.26 |
| ๋ณํฉ ์ ๋ ฌ(merge sort) (0) | 2020.09.25 |
| ํต ์ ๋ ฌ(quick sort) (1) | 2020.09.24 |