본문 바로가기
알고리즘/python

1012번 유기농 배추(python3)

by 펀구구 2022. 1. 30.

https://www.acmicpc.net/problem/1012

 

1012번: 유기농 배추

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

www.acmicpc.net

bfs나 dfs를 적용해주면 되는데, 이때 bfs나 dfs를 적용할 수 있는 칸을 만나게 되면 count 변수를 1 증가시켜주는 방법으로 유기농배추 모임의 수를 구할 수 있다.

from collections import deque

T = int(input())

dx = [1, -1, 0, 0]
dy = [0, 0, 1, -1]


def bfs():
    m, n, k = map(int, input().split())
    MAP = [[0] * m for _ in range(n)]
    visited = [[0] * m for _ in range(n)]
    for i in range(k):
        y, x = map(int, input().split())
        MAP[x][y] = 1
    count = 0
    for i in range(n):
        for j in range(m):
            if visited[i][j] == 1:
                continue
            if MAP[i][j] == 0:
                continue
            count += 1
            queue = deque()
            queue.append([i, j])
            visited[i][j] = 1
            while queue:
                x, y = queue.popleft()
                for k in range(4):
                    nx = x + dx[k]
                    ny = y + dy[k]
                    if 0 <= nx < n and 0 <= ny < m:
                        if visited[nx][ny] == 0 and MAP[nx][ny] == 1:
                            queue.append([nx, ny])
                            visited[nx][ny] = 1
    print(count)


for i in range(T):
    bfs()

'알고리즘 > python' 카테고리의 다른 글

7569번 토마토(python3)  (0) 2022.02.02
7576번 토마토(python3)  (0) 2022.01.30
2606번 바이러스(python3)  (0) 2022.01.30
2178번 미로 탐색(python3)  (0) 2022.01.29
2667번 단지번호붙이기(python3)  (0) 2022.01.29