import sys
sys.stdin = open('input.txt', 'rt')
input = sys.stdin.readline
# g[h][w]
# w 열의 개수,
# h 행의 개수,
dx = [1,-1,0,0,1,-1,1,-1]
dy = [0,0,1,-1,1,-1,-1,1]
def DFS(x,y):
global comp
if 0<=x<h and 0<=y<w and g[x][y]==1:
g[x][y] = 0
# comp+=1
# for n in range(8):
# print(dx[n],dy[n])
# DFS(x+dx[n], y+dy[n])
# return True
DFS(x+dx[0], y+dy[0])
DFS(x+dx[1], y+dy[1])
DFS(x+dx[2], y+dy[2])
DFS(x+dx[3], y+dy[3])
DFS(x+dx[4], y+dy[4])
DFS(x+dx[5], y+dy[5])
DFS(x+dx[6], y+dy[6])
DFS(x+dx[7], y+dy[7])
# DFS(x+dx[8], y+dy[8])
return True
else:
return False
while True:
w, h = map(int, input().split())
if w==0 and h==0:
break
g = [list(map(int, input().split())) for _ in range(h)]
# for gg in g:
# print(gg)
comp = 0
for x in range(h):
for y in range(w):
if DFS(x, y) == True:
comp += 1
print(comp)
자꾸 대각선 연결이 안 먹혀서 확인해보니 for문 안에 있는 n in range(8)의 n이 0만 출력되어 생긴 오류였다. 풀어서 쓰니 됐다. 왤까..ㅋㅋ
대각선 연결까지 빼먹지 말고 풀어야 하는 문제.
'⚡️algorithm' 카테고리의 다른 글
[완전탐색, 파이썬] 백준 1476. 날짜계산 (0) | 2022.04.29 |
---|---|
[BFS 파이썬] 백준 7576. 토마토 (0) | 2022.04.29 |
[DFS] 백준 10265. MT - 틀림 (0) | 2022.04.28 |
[DFS, 파이썬] 백준 2468. 안전영역 (0) | 2022.04.27 |
[DFS, 파이썬] 백준 11403. 경로찾기 (0) | 2022.04.27 |