■ 문제풀이
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 |