Algoritm/BOJ

[BOJ] 1012:유기농 배추

twoDeveloper 2021. 8. 9. 01:06

■ 문제풀이

1) dfs 알고리즘

 

해답

import sys
sys.setrecursionlimit(10 ** 8)

def dfs(x, y):
    if x <= -1 or x >= n or y <= -1 or y >= m:
        return False
    
    if graph[x][y] == 1:
        graph[x][y] = 0
        
        # 상, 하, 좌, 우
        dfs(x - 1, y)
        dfs(x + 1, y)
        dfs(x, y - 1)
        dfs(x, y + 1)
        
        return True
    return False

# 테스트 케이스 입력
t = int(input())

result = []
for i in range(t):
    # m = 가로, n = 세로, k = 배추가 심어져 있는 위치의 개수
    m, n, k = map(int, sys.stdin.readline().split())
    
    # 0으로 초기화 후 배추가 있는 곳 1로 변환
    graph = [[0] * m for _ in range(n)]
    for _ in range(k):
        a, b = map(int, sys.stdin.readline().split())
        graph[b][a] = 1
    
    count = 0
    for i in range(n):
        for j in range(m):
            if dfs(i, j) == True:
                count += 1
                
    result.append(count)

for i in result:
    print(i)

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

 

1012번: 유기농 배추

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

www.acmicpc.net

 

'Algoritm > BOJ' 카테고리의 다른 글

[BOJ] 1697번:숨바꼭질  (0) 2021.08.16
[BOJ] 2178번:미로 탐색  (0) 2021.08.13
[BOJ] 2667번:단지번호 붙이기  (0) 2021.08.05
[BOJ] 2606번:바이러스  (0) 2021.08.02
[BOJ] 1260번:DFS와 BFS  (0) 2021.08.01