n, m = map(int, input().split())
graph = [list(map(int, input())) for _ in range(n)]
visited = [[0] * m] * n
go = (-1, 0), (0, 1), (1, 0), (0, -1) #URDL
x, y = (0, 0)
count = 0
result = 0
for i in range(len(go)):
new_x = x + go[i]
new_y = y + go[i]
if new_x < 0 or new_x > n or new_y < 0 or new_y > m
continue
if graph[x][y] == graph[new_x][new_y] == 0:
if visited[x][y] == 2
count += 1
elif visited[new_x][new_y] == 0
visited[x][y] = 1
x = new_x
y = new_y
else
visited[x][y] = 2
x = new_x
y = new_y
if visited[new_x][new_y] == 2 or graph[new_x][new_y] == 1
x = new_x
y = new_y
visited = [[] for _ in range(n * m)]
if graph[x][y] == 0
v = y + (x * y)
for i in range(4): #사방을 돌아보면서
new_x = x + dir[i][0] #옆칸 위치 설정
new_y = y + dir[i][1]
#얼음 틀을 벗어나는 경우, 넘어감
if new_x < 0 or new_x > n or new_y < 0 or new_y > m:
continue
if graph[new_x][new_y] == 0 and new_y + (new_x * new_y) not in visited[v]:
visited[v].append(new_y + (new_x * new_y)) #스택 만들기
: 재귀함수를 쓰고싶은데, 아직 재귀함수는 너무 어렵다ㅠㅠ 연습하고 다시 풀어봐야지
n, m = map(int, input().split()) #입력
graph = [list(map(int, input())) for _ in range(n)] #얼음 틀 입력
dir = [(-1, 0), (0, 1), (1, 0), (0, -1)] #북동남서 방향
result = 0 #결과값 카운트
def visit(x, y):
for i in range(4): #북동남서를 한번씩 돌아보며
new_x = x + dir[i][0]
new_y = y + dir[i][1]
#범위를 벗어나는 경우 넘어감
if new_x < 0 or new_x >= n or new_y < 0 or new_y >= n:
return False
#현재 노드를 아직 방문하지 않았다면, 방문 처리
if graph[x][y] == 0:
graph[x][y] = 1
#재귀함수
visit(new_x, new_y)
#연결되었다는 표시
return True
return False
for a in range(n):
for b in range(m):
#연결된 공간이 있다면, 결과 카운트
if visit(a, b) == True:
result += 1
print(result)
: 뭐가 문제일까?!