if (i,j)가 nm보다 크거나 0보다 작으면 : false
if (i,j)==0 :
(i,j) == 1 로 바꿔주고
재귀함수 호출
dfs(i-1,y)
dfs(i,y-1)
dfs(i+1,y)
dfs(i,y+1)
return True
return False --> if문에 들어오지않으면 (0이 아니면) False리턴
n,m = map(int,input().split())
graph=[]
for i in range(n) :
graph.append(list(map(int,input().split())))
def dfs(i,j) :
if i>=n or i<0 or j>=m or j<0 :
# nm list는 위에서 먼저 입력받아서 사용할 수 있다
# 인덱스는 0~n-1 , 0~m-1 이기에 nm과 같으면 OutofIndex임을 주희해야한다
return False
if graph[i][j] == 0:
graph[i][j] = 1
# 2차원 list 표현식에 주의하기
dfs(i-1,j)
dfs(i,j-1)
dfs(i+1,j)
dfs(i,j+1)
return True
return False
result=0
for i in range (n):
for j in range(m):
if dfs(i,j) == True:
result+=1
# [0,0]부터 [n-1,m-1]까지 돌면서 0으로 시작 → DFS를 탄 애들 1개 당 result+=1 를 여기서 해준다
print(result)