๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐Ÿฆ• ๊ณต๋ฃก์ด ๋˜์ž!

[๋ฐฑ์ค€] Python DFS์™€ BFS ๋ณธ๋ฌธ

Development/CodingTest

[๋ฐฑ์ค€] Python DFS์™€ BFS

Kirok Kim 2021. 12. 30. 20:58
์ „์ฒด ์ฝ”๋“œ
from collections import deque
N, M, V=map(int,input().split())
matrix=[[0]*(N+1) for i in range(N+1)]
visited=[False]*(N+1)
for i in range(M):
  x,y=map(int,input().split())
  matrix[x][y]=matrix[y][x]=1
def dfs(matrix,V,visited):
  visited[V]=True
  print(V,end=' ')
  for i in range(1,N+1):
    if not visited[i]and matrix[V][i]==1:
      dfs(matrix,i,visited)
def bfs(matrix,V,visited):
  queue=deque([V])
  visited[V]=False
  while queue:
    V=queue.popleft()
    print(V,end=' ')
    for i in range(1,N+1):
      if visited[i] and matrix[V][i]==1:
        queue.append(i)
        visited[i]=False
dfs(matrix,V,visited)
print()
bfs(matrix,V,visited)

 

์ž…๋ ฅ๊ฐ’ ๋ฐ›๊ธฐ
N, M, V=map(int,input().split())
# map ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•˜์—ฌ map ํ•จ์ˆ˜ ๋‚ด ์™ผ์ชฝ ํ•ญ์— ์žˆ๋Š” ํ•จ์ˆ˜(int)๋ฅผ map ํ•จ์ˆ˜๋‚ด ์šฐ์ธก ํ•ญ์— ์ ์šฉํ•˜์—ฌ ์ขŒํ•ญ์— ๋Œ€์ž…ํ•œ๋‹ค.
matrix=[[0]*(N+1) for i in range(N+1)]
# ํ–‰๋ ฌ
visited=[False]*(N+1)
# ์ง€๋‚˜๊ฐ„ ์ž๋ฆฌ ํ™•์ธ 
for i in range(M):
  x,y=map(int,input().split())
  matrix[x][y]=matrix[y][x]=1
  # ์–‘ ๋ฐฉํ–ฅ edge ์„ค์ •

 

dfs
def dfs(matrix,V,visited):
  visited[V]=True
  # ์ง€๋‚˜๊ฐ„ ์ž๋ฆฌ ์ฒดํฌ
  print(V,end=' ')
  for i in range(1,N+1):
    if not visited[i]and matrix[V][i]==1:
    # ์ง€๋‚˜๊ฐ€์ง€ ์•Š๊ณ  node๊ฐ„์˜ edge๊ฐ€ ์žˆ์œผ๋ฉด
      dfs(matrix,i,visited)
      # ์žฌ๊ท€ํ•จ์ˆ˜

 

bfs
def bfs(matrix,V,visited):
  queue=deque([V])
  visited[V]=False
  # ์ด๋ฏธ True๋กœ ๋ณ€๊ฒฝ์ด ๋์œผ๋‹ˆ False๋กœ ์ฒดํฌ
  while queue:
    V=queue.popleft()
    # ์ œ์ผ ์•ˆ์ชฝ์— ์žˆ๋Š” ํ pop
    print(V,end=' ')
    for i in range(1,N+1):
      if visited[i] and matrix[V][i]==1:
        queue.append(i)
        visited[i]=False
        
dfs(matrix,V,visited)
print()
bfs(matrix,V,visited)
# ์ถœ๋ ฅ
๋ฐ˜์‘ํ˜•
Comments