백준 문제 링크
현수막
- BFS를 사용했다.
- 이번에는 상,하,좌,우 뿐만 아니라 대각선도 살펴봐야한다.
- bfs 코드는 기본 코드를 작성하면 된다.
- 이중 반복문으로 lst를 살펴볼 때, lst[i][j] == 1이면 bfs(i,j)를 실행하고
answer + 1 해준다.- answer를 출력하면 끝
from collections import deque
M, N = map(int, input().split())
lst = [list(map(int, input().split())) for _ in range(M)]
dx = [-1, 0, 1, 0, 1, 1, -1, -1]
dy = [0, 1, 0, -1, 1, -1, 1, -1]
count = 0
def bfs(x,y):
queue = deque()
queue.append((x,y))
lst[x][y] = 0
while queue:
x,y = queue.popleft()
for d in range(8):
nx = x + dx[d]
ny = y + dy[d]
if (0<=nx<M) and (0<=ny<N) and (lst[nx][ny] == 1):
lst[nx][ny] = 0
queue.append((nx,ny))
answer = 0
for i in range(M):
for j in range(N):
if lst[i][j] == 1:
bfs(i,j)
answer += 1
print(answer)