Hikenny25

1012 - 유기농 배추 본문

baekjoon (solved.ac)/class 3 Solve

1012 - 유기농 배추

hikenny 2022. 10. 27. 08:02

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

 

1012번: 유기농 배추

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

www.acmicpc.net

 

- DFS

 

import sys

sys.setrecursionlimit(int(1e9))
input = sys.stdin.readline

def dfs(dy, dx):
    if dy <= -1 or dx <= -1 or dy >= n or dx >= m:
        return

    if matrix[dy][dx]:
        matrix[dy][dx] = 0
        
        dfs(dy+1,dx)
        dfs(dy-1,dx)
        dfs(dy,dx+1)
        dfs(dy,dx-1)
    else:
        return


t = int(input())

for _ in range(t):
    m, n, k = map(int, input().split())

    matrix = [[0] * m for _ in range(n)]
    for _ in range(k):
        x, y = map(int, input().split())
        matrix[y][x] = 1

    cnt = 0
    for x in range(m):
        for y in range(n):
            if matrix[y][x] == 1:
                dfs(y,x)
                cnt += 1

    print(cnt)

 

좌표 하나를 찍고 그 좌표에서 탐색 연산을 진행!

탐색한 부분의 값을 0으로 만들어주고, 상하좌우에 1이 없으면 탐색 연산을 종료시킨다

 

다음 좌표로 이동하는데, 만약 값이 0이면 탐색 연산을 진행하지 않고 skip

 

dfs 연산의 횟수를 출력하면 정답이다

 

 

DFS로 구현한 이유는 쉬워서..ㅎ

DFS를 응용한 풀이를 해서 기분이 좋다

'baekjoon (solved.ac) > class 3 Solve' 카테고리의 다른 글

11279 - 최대 힙  (0) 2022.10.27
1927 - 최소 힙  (0) 2022.10.27
1931 - 회의실 배정  (1) 2022.10.26
1541 - 잃어버린 괄호  (0) 2022.10.26
9375 - 패션왕 신해빈  (0) 2022.10.26
Comments