본문 바로가기
알고리즘 문제/자료구조&알고리즘

DFS(Depth First Search)/BFC(Breadth First Search)

by 태윤2 2020. 10. 21.

 

 

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



def
 recursive(i):
  if i == 100:
    return
  print(i,'번째 재귀함수에서', i+1'번째 재귀함수를 호출')
  recursive(i+1)
  print(i,'번째 재귀함수를 종료')
 
# recursive(1)
 
 
 
def factorial(n):
 
  if n <=1:
    return 1
  return n*factorial(n-1)
 
print(factorial(10))
 
def factorial2(n):
  result = 1
  for i in range(1,n+1):
    result*=i
  return result
 
print(factorial2(5))
 
  
cs

 

 

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
INF = 999999999999  #무한의 비용 선언
 
# 2차원 리스트를 이용해 인접 행렬 표현
graph =[
  [0,7,5],
  [7,0,INF],
  [5,INF,0]
]
 
print(graph)
 
 
 
# 행(Row)이 3개인 2차원 리스트로 인접리스트 표현
graph = [[] for _ in range(3)]
 
# 노드 0 에 연결된 노트 정보 저장(노드, 거리)
graph[0].append((1,7))
graph[0].append((2,5))
 
# 노드 1 에 연결된 노드 정보 저장(노드, 거리)
graph[1].append((0,7))
 
# 노드 2에 연결된 노드 정보 저장(노드, 거리)
graph[2].append((0,5))
 
print(graph)
cs

 

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
# DFS 메서드 정의
 
def dfs(graph, v, visited):
  # 현재 노드를 방문 처리
  visited[v] = True
  print(v, end=" ")
  # 현재 노드와 연결된 다른 노드를 재귀적으로 방문
  for i in graph[v]:
      if not visited[i]:
        dfs(graph,i,visited)
 
graph =[
  [],
  [2,3,8],
  [1,7],
  [1,4,5],
  [3,5],
  [3,4],
  [7],
  [2,6,8],
  [1,7]
]
 
# 각노드가 방문된 정보를 리스트 자료형으로 표현(1차원 리스트))
visited = [False]* 9
 
# 정의된 DFS 함수 호출
dfs(graph,1,visited)
 
cs

 

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
32
33
34
35
36
37
38
39
#BFS 예제
from collections import deque
 
# BFS 메서드 정의
def bfs(graph, start, visited):
  # 큐(Queue) 구현을 위해 deque 라이브러리 사용
  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 =[
  [],
  [2,3,8],
  [1,7],
  [1,4,5],
  [3,5],
  [3,4],
  [7],
  [2,6,8],
  [1,7]
]
# 각노드가 방문된 정보를 리스트 자료형으로 표현(1차원 리스트))
visited = [False]* 9
# 정의된 BFS 함수 호출
bfs(graph,1,visited)
cs

 

 

 

 

'알고리즘 문제 > 자료구조&알고리즘' 카테고리의 다른 글

정렬 예제  (0) 2020.10.22
정렬  (0) 2020.10.21
DFS/BFS 예제  (0) 2020.10.21
구현  (0) 2020.10.19
그리디  (0) 2020.10.19