n, m = 4, 5
edges = [
[0, 0, 1, 1, 0],
[0, 0, 0, 1, 1],
[1, 1, 1, 1, 1],
[0, 0, 0, 0, 0]
]
visited = [[[False] * 5] * 4]
def dfs(x, y):
if x < 0 or x >= n or y < 0 or y >= m:
return False
if edges[x][y] == 0:
edges[x][y] = 1
dfs(x - 1, y)
dfs(x, y - 1)
dfs(x + 1, y)
dfs(x, y + 1)
return True
return False
cnt = 0
for i in range(n):
for j in range(m):
if dfs(i, j):
cnt += 1
print(cnt)
Reference
- 해당 포스팅은 이것이 취업을 위한 코딩테스트다 책을 보고 풀이 해본 것입니다. 지적사항 있으시면 댓글 남겨주시면 감사하겠습니다.
'Python > 알고리즘' 카테고리의 다른 글
[python] 이것이 취업을 위한 코딩테스트다 BFS - 미로탈출 (0) | 2020.11.12 |
---|---|
[python] 이것이 취업을 위한 코딩테스트다 구현 - 왕실의 나이트 (0) | 2020.11.07 |