입력
5 4
1 1 0 1 1
1 1 0 0 0
0 1 0 0 0
0 1 0 0 1
출력
3
맵을 탐색하며 1을 만나면 인접한 1들을 모두 0으로 만들고, 섬의 개수를 하나 더한다.
def dfs(r, c):
if r < 0 or r >= row or c < 0 or c >= col:
return False
if graph[r][c] == 0:
return False
if graph[r][c] == 1:
graph[r][c] = 0
dfs(r-1, c)
dfs(r+1, c)
dfs(r, c-1)
dfs(r, c+1)
return True
graph = []
count = 0
col, row = map(int, input().split())
for i in range(row):
graph.append(list(map(int, input().split())))
for i in range(row):
for j in range(col):
if dfs(i, j) == True:
count += 1
print(count)
Time Complexity: O(row * col)