알고리즘/백준

[백준] 1012번 유기농 배추 (파이썬)

알감자 2022. 1. 4. 20:20
 

1012번: 유기농 배추

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

www.acmicpc.net

 

 

코드

import sys
sys.setrecursionlimit(10**6)

T = int(input())

def start():
    m, n, k = map(int, input().split())
    tree = list([0 for _ in range(m)] for _ in range(n))
    answer = []

    for _ in range(k):
        x, y = map(int, input().split())
        tree[y][x] = 1

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

    def dfs(tree, cnt, x, y):
        tree[x][y] = 0
        for i in range(4):
            n_x = x + dx[i]
            n_y = y + dy[i]
            if 0 <= n_x < n and 0 <= n_y < m:
                if tree[n_x][n_y] == 1:
                    cnt = dfs(tree, cnt+1, n_x, n_y)
        return cnt

    for i in range(n):
        for j in range(m):
            if tree[i][j] == 1:
                answer.append(dfs(tree,1,i,j))

    print(len(answer))

for _ in range(T):
    start()