그래프에서 노드와 연결된 간선 정보를 알려주었을 경우
방문 여부를 알 수 있는 배열을 같이 사용하여 해결한다.
1차원 배열로 graph를 구성하였을 때 구현
def dfs(graph, v, visited):
visited[v] = True
print (v, end=' ')
for i in graph[v]:
if not visited[v]:
dfs(graph, i, visited)
2차원 배열로 graph를 구성하였을 때 구현
def dfs(v):
visited[v] = 1
print (v, end=' ')
for i in range(1,N+1):
if visited[i] == 0 and graph[v][i] == 1:
dfs(i)
바둑판과 같이 직사각형 형태의 값들이 주어지는 경우
상하좌우로 이동하는 경우를 고려한다.
x, y의 값이 음수가 되거나 가로/세로의 크기보다 커지는 경우 조건을 넣어 처리한다.
def dfs(x,y):
if x<=-1 or x>N or y<=-1 or y>M:
return False
if graph[x][y]==1:
dfs(x,y+1)
dfs(x,y-1)
dfs(x+1,y)
dfs(x-1,y)
위 함수에 적절한 처리를 해주어 풀어준다.
'Dev > 알고리즘' 카테고리의 다른 글
[dijkstra] 백준 1753 파이썬 (0) | 2021.11.01 |
---|---|
[BFS] 백준 7576 토마토 설명 (python) (0) | 2021.10.27 |
계산 시간 (백준 10818) (0) | 2018.05.02 |
Scanf에 대하여 (백준 10953) (0) | 2018.05.01 |
소수 구하기 (에라토스테네스의 체) (0) | 2018.04.22 |