๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?
[๋ด๊ฐ ๋ณผ ์ ์ฉํ ๋ชจ์] ์ฝ๋ฉ ํ ์คํธ ๋ณธ๋ฌธ
728x90
๋ฐ์ํ
๐ ์ฃผ์ด์ง ์์์ ๋ ธ๋ ๊ด๊ณ๋ฅผ ์ด์ฉํ์ฌ ์ธ์ ๋ฆฌ์คํธ ๋ง๋ค๊ธฐ
- (๊ฐ์ฅ ํฐ ๋ ธ๋ ๋ฒํธ๊ฐ 5, ๋ ธ๋๋ ์ด 5๊ฐ, ๊ฐ์ ๊ฐ์ 5)
graph=[[] for _ in range(6)]
for _ in range(5):
A,B=map(int,input().split())
graph[A].append(B)
graph[B].append(A)
print(graph)
๐ ๊น์ด ์ฐ์ ํ์(Depth First Search)
: DFS๋ ํ ๋ฃจํธ๋ก ๊ณ์ ๋ค์ด๊ฐ ํ์ํ ๋ค ํ์์ ๋ง์น๋ฉด ๋ค์ ๋์๊ฐ ๋ฐฉ๋ฌธํ์ง ์์ ๋ฃจํธ๋ก ๋ค์ด๊ฐ ํ์
: ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ฐพ๊ธฐ ์ํ ๋ฐฑ ํธ๋ํน ์ ์์ฃผ ์ฌ์ฉ๋๋ ํ์ ์๊ณ ๋ฆฌ์ฆ
def dfs(v):
visited[v] = True
print(v, end=' ')
for i in graph[v]:
if not visited[i]:
dfs(i)
graph=[[] for _ in range(6)]
visited=[False]*6 #๋ฐฉ๋ฌธ ์ฌ๋ถ
for _ in range(5):
A,B=map(int,input().split())
graph[A].append(B)
graph[B].append(A)
for i in graph: #๋
ธ๋๋ฒํธ์ ๋ฐ๋ผ ์ ๋ ฌ
i.sort()
dfs(1)
print()
print(visited)
print(graph)
๐ ๋์ด ์ฐ์ ํ์(Breadth First Search)
: BFS๋ ์์ ๋ ธ๋๋ก๋ถํฐ ๊ฐ๊น์ด ๋ ธ๋๋ฅผ ์์ฐจ์ ์ผ๋ก ํ์ํ๋ ์๊ณ ๋ฆฌ์ฆ
: ์ฐ๊ฒฐ๋์ด ์๋ ๋ ธ๋๋ฅผ ํ์ ๋ฃ๊ณ ์์ฐจ์ ์ผ๋ก ์ถ์ถํด๋๊ฐ๋ ๊ณผ์ ์ ํตํด ๊ตฌํ
from collections import deque
def bfs(start):
queue=deque([start])
visited[start]=True
while queue:
v = queue.popleft()
print(v, end=' ')
for i in graph[v]:
if not visited[i]:
queue.append(i)
visited[i] = True
graph=[[] for _ in range(6)]
visited=[False]*6
for _ in range(5):
A,B=map(int,input().split())
graph[A].append(B)
graph[B].append(A)
for i in graph:
i.sort()
bfs(1)
print()
print(visited)
728x90
๋ฐ์ํ
'๐ฆฅ ์ฝํ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๊ฐ๋จํ DFS] ์ผ์ ๋ฌธ์ (0) | 2023.04.12 |
---|---|
[๊ฐ๋จํ BFS] ๋ฏธ๋ก ๊ฒ์ (0) | 2023.04.12 |
[LG ์ฝ๋ฉํ ์คํธ ์์ ] ๋ง๋ฆฌ์ค ๊ฒ์ (0) | 2023.04.12 |
Comments