BOJ - 14716

주의·2024년 1월 2일
0

boj

목록 보기
40/214
post-thumbnail

백준 문제 링크
현수막

❓접근법

  1. BFS를 사용했다.
  2. 이번에는 상,하,좌,우 뿐만 아니라 대각선도 살펴봐야한다.
  3. bfs 코드는 기본 코드를 작성하면 된다.
  4. 이중 반복문으로 lst를 살펴볼 때, lst[i][j] == 1이면 bfs(i,j)를 실행하고
    answer + 1 해준다.
  5. 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)

0개의 댓글