โปํ์: ๋ง์ ๋ฐ์ดํฐ์์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋ ๊ณผ์
๊ทธ๋ํ ํ์์ ์ํ ์๋ฃ๊ตฌ์กฐ
(1) ์คํ
(2) ํ
(3) ์ฌ๊ทํจ์
(4) ๊ทธ๋ํ
DFS | ๊น์ด ์ฐ์ ํ์
: ๊น์ ๋ถ๋ถ์ ์ฐ์ ์ ์ผ๋ก ํ์
๐ ํน์ ๊ฒฝ๋ก๋ก ํ์ํ๋ค๊ฐ ํน์ ์ํฉ์์ ์ต๋ํ ๊น์์ด ๋ค์ด๊ฐ์ ๋ ธ๋ ๋ฐฉ๋ฌธ ํ ๋ค์ ๋์๊ฐ ๋ค๋ฅธ ๋ ธ๋ ๋ฐฉ๋ฌธ
(1) ํ์ ์์ ๋ ธ๋๋ฅผ ์คํ์ ์ฝ์ ํ๊ณ ๋ฐฉ๋ฌธ์ฒ๋ฆฌ
โป ๋ฐฉ๋ฌธ์ฒ๋ฆฌ: ์คํ์ ํ๋ฒ ์ฝ์ ๋์ด ์ฒ๋ฆฌ๋ ๋ ธ๋๊ฐ ๋ค์ ์ฝ์ ๋์ง ์๊ฒ check
(2) ์คํ์ ์ต์๋จ ๋ ธ๋์ ๋ฐฉ๋ฌธํ์ง ์์ ๋ ธ๋๊ฐ ์๋ค๋ฉด ๊ทธ ์ธ์ ๋ ธ๋๋ฅผ ์คํ์ pushํ๊ณ ๋ค์ ๋์๊ฐ ๋ค๋ฅธ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๋ค.
(3) (2) ๊ณผ์ ์ ๋ฐ๋ณต ์ํํ๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ๋ ธ๋์ ํ์ ์์๋ ์คํ์ ๋ค์ด๊ฐ ์์์ ๊ฐ๋ค.
1 → 2 → 5 →6 → 3 → 7 → 4 → 8
์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ.
N,M,V = map(int,input().split())
graph = [[] for _ in range(N+1)]
visited = [False] * (N + 1)
for i in range(M):
start, end = map(int, input().split())
graph[start].append(end)
graph[end].append(start)
graph[start].sort()
graph[end].sort()
def DFS(graph, v, visited):
visited[v] = True
print(v, end = ' ')
for i in graph[v]:
if not visited[i]:
DFS(graph, i, visited)
DFS(graph, V, visited)
๋ ๋ฒ์งธ ๋ฐฉ๋ฒ.
from sys import stdin
N, M, V = map(int, stdin.readline().split())
matrix = [[0]*(N+1) for i in range(N+1)]
for i in range(M):
a, b = map(int, stdin.readline().split())
matrix[a][b] = matrix[b][a] = 1
visit_list = [0]*(N+1)
def DFS(v):
visit_list[v] = 1
print(v, end=' ')
for i in range(1, N+1):
if(visit_list[i] == 0 and matrix[v][i] == 1):
DFS(i)
DFS(V)
BFS | ๋๋น ์ฐ์ ํ์
: ๊ฐ๊น์ด ๋ ธ๋๋ถํฐ ํ์ํ๋ ์๊ณ ๋ฆฌ์ฆ
๐ ์ธ์ ํ ๋ ธ๋๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ํ์ ๋ฃ๋ ์๊ณ ๋ฆฌ์ฆ์ ํตํด ๊ตฌํํ๋ฉด ์์ฐ์ค๋ฝ๊ฒ ๋จผ์ ๋ค์ด์จ ๊ฒ์ด ๋จผ์ ๋๊ฐ
(1) ํ์ ์์ ๋ ธ๋๋ฅผ ํ์ ์ฝ์ ํ๊ณ ๋ฐฉ๋ฌธ์ฒ๋ฆฌ
โป ๋ฐฉ๋ฌธ์ฒ๋ฆฌ: ์คํ์ ํ๋ฒ ์ฝ์ ๋์ด ์ฒ๋ฆฌ๋ ๋ ธ๋๊ฐ ๋ค์ ์ฝ์ ๋์ง ์๊ฒ check
(2) ํ์์ ๋ ธ๋๋ฅผ ๊บผ๋ด ํด๋น ๋ ธ๋์ ์ธ์ ๋ ธ๋ ์ค ๋ฐฉ๋ฌธํ์ง ์์ ๋ ธ๋๋ฅผ ๋ชจ๋ ํ์ ์ฝ์ ํ๊ณ ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ
(3) (2) ๊ณผ์ ์ ๋ฐ๋ณต ์ํํ๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ๋ ธ๋์ ํ์ ์์๋ ํ์ ๋ค์ด๊ฐ ์์์ ๊ฐ๋ค.
1 → 2 → 3 → 4 → 5 → 6 → 7 → 8
์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ.
from collections import deque
N,M,V = map(int,input().split())
graph = [[] for _ in range(N+1)]
visited = [False] * (N + 1)
for i in range(M):
start, end = map(int, input().split())
graph[start].append(end)
graph[end].append(start)
graph[start].sort()
graph[end].sort()
def BFS(graph, start, visited):
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
BFS(graph,V,visited)
๋ ๋ฒ์งธ ๋ฐฉ๋ฒ.
N,M,V=map(int,input().split())
matrix=[[0]*(N+1) for i in range(N+1)]
for i in range(M):
a,b = map(int,input().split())
matrix[a][b]=matrix[b][a]=1
visit_list=[0]*(N+1)
def bfs(V):
queue=[V]
visit_list[V]=1
while queue:
V=queue.pop(0)
print(V, end=' ')
for i in range(1, N+1):
if(visit_list[i]==0 and matrix[V][i]==0):
queue.append(i)
visit_list[i]=1
bfs(V)
'๐ฅ CS > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm] ํ | ์ต๋ ํ, ์ต์ ํ (0) | 2022.02.23 |
---|---|
[Algorithm] ์๋ผํ ์คํ ๋ค์ค์ ์ฒด | ์์ ์ฐพ๊ธฐ (2) | 2021.08.01 |
[Algorithm] ์ด์ง ํ์ | Binary Search (0) | 2021.07.31 |
[Algorithm] ์ ๋ ฌ | ์ ํ ์ ๋ ฌ, ์ฝ์ ์ ๋ ฌ, ํต ์ ๋ ฌ, ๊ณ์ ์ ๋ ฌ (0) | 2021.07.27 |
[Algorithm] ๋์ ํ๋ก๊ทธ๋๋ฐ | Dynamic Programming (DP) (0) | 2021.07.11 |