import sys
# sys.stdin.readline()
from collections import deque
sys.setrecursionlimit(100000000)
import heapq
INF = 1e9
def DFS(x,y):
while True:
if x >=N or y>=M or x<0 or y<0:
return False
if graph[x][y] == 0:
graph[x][y] = 1
DFS(x+1,y)
DFS(x,y+1)
DFS(x,y-1)
DFS(x-1,y)
return True
return False
N,M = map(int,sys.stdin.readline().split())
graph = []
for i in range(N):
graph.append(list(map(int,sys.stdin.readline().rstrip())))
count = 0
for i in range(N):
for j in range(M):
if DFS(i,j) == True:
count +=1
print(count)
상하좌우에 대해서 DFS를 돌려준다
모든 칸에 대해서 DFS를 돌려보고 return값이 True가 나온다는 것은(상하좌우 탐색할 노드가 없는 경우)
빙하를 만들었다는 의미이므로 count +=1
'알고리즘 문제 풀이 > 이코테' 카테고리의 다른 글
[이코테] CH05 DFS/BFS 실전문제 15번 특정 거리의 도시 찾기 (0) | 2023.11.27 |
---|---|
[이코테] CH05 DFS/BFS 실전문제 4번 미로탈출 (0) | 2023.11.27 |
[이코테] CH04 구현 실전문제 14번 외벽 점검 (0) | 2023.11.27 |
[이코테] CH04 구현 실전문제 13번 치킨 배달 (0) | 2023.11.27 |
[이코테] CH04 구현 실전문제 12번 기둥과 보 설치 (1) | 2023.11.27 |