프로그래밍/문제풀이
BOJ 1012 유기농 배추 Python
Cycrypt0
2023. 4. 6. 23:03
728x90
일반적인 DFS 문제이며, 재귀를 이용한 DFS 구현으로 풀었다.
맨 처음에 Recursion error가 발생했는데, 백준에서 재귀를 1000 이하로만 설정하지만, 2500번의 재귀가 발생할 수 있으므로 설정 값을 바꿔줌으로서 해결했다.
아래는 코드이다.
import sys
sys.setrecursionlimit(10**6)
def dfs(x, y, graph):
if x <= -1 or y <= -1 or x >= len(graph) or y >= len(graph[0]):
return 0
if graph[x][y] == 1:
graph[x][y] = 0
dfs(x + 1, y, graph)
dfs(x, y + 1, graph)
dfs(x - 1, y, graph)
dfs(x, y - 1, graph)
return 1
return 0
def solve():
vert, horz, plant = map(int, input().split())
graph = [[0 for i in range(horz + 1)] for j in range(vert + 1)]
worm = 0
for i in range(plant):
x, y = map(int, input().split())
graph[x][y] = 1
for n, i in enumerate(graph):
for m, j in enumerate(i):
if j == 1:
worm += dfs(n, m, graph)
print(worm)
for i in range(int(input())):
solve()
728x90