STUDY/Algorithm

[백준] 1012 유기농배추

sinawi95 2021. 3. 1. 17:25
728x90

https://acmicpc.net/problem/1012 

 

1012번: 유기농 배추

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

www.acmicpc.net

def dfs(row, col, matrix, visited):
    pass

t = int(input())
for tc in range(1, t + 1):
    m, n, k = map(int, input().split())
    field = [[0] * m for _ in range(n)]
    visited = [[0] * m for _ in range(n)]

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

    delta = [(-1,0),(1,0),(0,-1),(0,1)]
    stack = []
    result = 0
    for r in range(n):
        for c in range(m):
            if field[r][c] and visited[r][c] == 0:
                stack.append((r, c))
                while stack:
                    visit_node = stack[-1]
                    visited[visit_node[0]][visit_node[1]] = 1
                    for dt in delta:
                        dr = visit_node[0] + dt[0]
                        dc = visit_node[1] + dt[1]
                        if 0 <= dr < n and 0 <= dc < m:
                            if field[dr][dc] == 1 and visited[dr][dc] ==0:
                                stack.append((dr,dc))
                                break
                    else:
                        stack.pop()
                result += 1
    print(result)

1~2줄을 보면 재귀로 dfs를 짜려했다.

하지만 어떻게해야할지 막막해서 안했다.

쓰던방법이 가장 편하다 ㅋㅋㅋ

이러면 안되는데...

문제 자체는 아파트 단지수 세는거랑 같아서 쉽게 풀었다.

'STUDY > Algorithm' 카테고리의 다른 글

[백준] 7569 토마토  (2) 2021.03.02
[백준] 7576 토마토  (0) 2021.03.02
[백준] 10026 적록색약  (0) 2021.03.01
[백준] 2667 단지 번호 붙이기  (0) 2021.02.24
[백준] 2606 바이러스  (0) 2021.02.24