<이것이 취업을 위한 코딩테스트다>를 공부하며 정리한 내용입니다.
4 5
00110
00011
11111
00000
3
n, m = map(int, input().split())
graph=[]
for i in range(n):
#input()하면 문자열 공백없어도 알아서 나뉜다. split() 필요없다.
graph.append(list(map(int, input())))
def dfs(x,y):
if x<0 or x>=n or y<0 or y>=m: #범위를 넘어가면 바로 빠이빠이
return False
if graph[x][y]==0: #한번도 방문하지 않은 곳이라면
graph[x][y]=1 #방문 표시
#상하좌우로 살펴서 연결되어 있다면 다 1로 표시해주기
#아래 재귀함수들의 리턴값은 다 날라가서 의미 없음.
dfs(x-1,y)
dfs(x+1,y)
dfs(x,y-1)
dfs(x,y+1)
return True
return False
cnt=0
for i in range(n):
for j in range(m):
if dfs(i,j)==True: #처음 방문한 곳이라면
cnt+=1 #카운트해주기
print(cnt)