프로그래밍/Python

[Python] 백준 1012 유기농 배추

모영이 2021. 2. 10. 21:17

 

1012번: 유기농 배추

차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 

www.acmicpc.net

1) 배추 배열 전체 탐색 후 1을 발견할 시 BFS 탐색 시작

2) BFS 탐색 큐에서 꺼낸 인덱스 값들을 배추 배열에 넣고 조건문 시작

3) 배추 배열이 1이면 큐에 인덱스 값 배열 삽입

 

전체 코드

import sys
import collections
input = sys.stdin.readline

def bfs(graph: list, root: list):
    queue = collections.deque([root])

    while queue:
        node = queue.popleft()
        i = node[0]
        j = node[1]
        if graph[i][j] == 1:
            graph[i][j] = 0
            if i > 0:
                queue.append([i - 1,j])
            if j > 0:
                queue.append([i, j - 1])
            if i + 1 < len(graph):
                queue.append([i + 1, j])
            if j + 1 < len(graph[i]):
                queue.append([i, j + 1])

T = int(input())
for _ in range(T):
    M, N, K = map(int, input().split())
    baechu = [[0 for _ in range(M)] for __ in range(N)]
    for __ in range(K):
        j, i = map(int, input().split())
        baechu[i][j] = 1
    count = 0
    for i in range(N):
        for j in range(M):
            if baechu[i][j] == 1:
                bfs(baechu, [i, j])
                count += 1
    print(count)