import sys
sys.setrecursionlimit(10000)
input = sys.stdin.readline
def dfs(x, y, n, m, graph):
if x >= n or x < 0 or y >= m or y < 0:
return False
if graph[y][x] == 0:
return False
graph[y][x] = 0
dfs(x+1, y, n, m, graph)
dfs(x-1, y, n, m, graph)
dfs(x, y+1, n, m, graph)
dfs(x, y-1, n, m, graph)
dfs(x+1, y+1, n, m, graph)
dfs(x+1, y-1, n, m, graph)
dfs(x-1, y-1, n, m, graph)
dfs(x-1, y+1, n, m, graph)
return True
while True:
n, m = map(int, input().split())
if n == 0 or m == 0:
break
dp = []
count = 0
for i in range(m):
dp.append(list(map(int, input().split())))
for row in range(n):
for column in range(m):
response = dfs(row, column, n, m, dp)
if response == True:
count += 1
print(count)
특이하게도 문제를 직접 입력 받고 '대각선'도 검사를 해야하는 문제였다. 계속 틀려서 문제를 살펴봤더니 대각선도 체크를 해줘야하는 문제였다.
결론 : 맨 처음 문제를 잘 읽자