본문 바로가기

파이썬/알고리즘

DFS/BFS 백준 1260번

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
"""
dfs
1. 현재 좌표에서 어떤 거를 할지 코딩한다
2. 다음에 방문할 노드, 좌표를 찾는다
3. 다음에 방문할께 문제의 범위를 벗어나는지 체크한다
4. 다음에 방문할께 있으면 dfs(다음 방문)
bfs
1. 큐를 만들고 현재 좌표를 집어 넣는다
2. 큐에 노드, 좌표들이 존재하면 반복한다
3. 큐에서 현재 좌표, 노드를 꺼낸다
4. 현재 좌표, 노드에서 어떤 거를 할지 코딩한
5. 다음에 방문할 노드, 좌표를 찾는다
6. 문제의 범위를 벗어나는지 체크한다
7. 벗어나지 않는 것들은 큐에 집어넣고 방문했다고 표시한다
"""
 
from collections import deque
 
def dfs(v,visited):
    visited[v]=True
    print(v,end=' ')
    for i in  list[v]:
        if not visited[i]:
            dfs(i,visited)
 
def bfs(v, visited):
    queue=deque([v])
    visited[v]=True
    while queue:
       v=queue.popleft()
       print(v, end=' ')
 
       for j in list[v]:
           if not visited[j]:
               queue.append(j)
               visited[j]=True
 
n,m,v=map(int, input().split())
list=[[] for i in range(n+1)]
 
for k in range(m):
    s,e=map(int, input().split())
 
    list[s].append(e)
    list[e].append(s)
 
for l in list:
    l.sort()
 
visited=[False]*(n+1)
dfs(v,visited)
visited=[False]*(n+1)
print()
bfs(v,visited)
 
 
 
 
 
cs

'파이썬 > 알고리즘' 카테고리의 다른 글

프로그래머스-숫자 문자열과 영단어  (0) 2021.08.16
파이썬-진수 변환, ASCII코드 변환  (0) 2021.06.01
파이썬- 2차원 리스트  (0) 2021.06.01
파이썬-배열 역순정렬  (0) 2021.06.01
파이썬-Range  (0) 2021.05.29