백준 문제 링크
양 한마리... 양 두마리...
- BFS를 사용했다.
- bfs함수는 기본 함수를 사용하면 된다.
- 이중 반복문으로 lst[i][j] == '#'이면 bfs(i,j)를 실행시키고 answer + 1
- answer를 출력하면 끝!
from collections import deque
T = int(input())
for _ in range(T):
H,W = map(int, input().split())
lst = []
for i in range(H):
lst.append(list(input()))
def bfs(x,y):
queue = deque()
queue.append((x,y))
lst[x][y] = '.'
dx = [0,0,1,-1]
dy = [1,-1,0,0]
while queue:
x,y = queue.popleft()
for d in range(4):
nx = x + dx[d]
ny = y + dy[d]
if (0<=nx<H) and (0<=ny<W) and (lst[nx][ny] == '#'):
lst[nx][ny] = '.'
queue.append((nx,ny))
answer = 0
for i in range(H):
for j in range(W):
if lst[i][j] == '#':
bfs(i,j)
answer += 1
print(answer)