입력
입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 첫째 줄에는 배추를 심은 배추밭의 가로길이 M(1 ≤ M ≤ 50)과 세로길이 N(1 ≤ N ≤ 50), 그리고 배추가 심어져 있는 위치의 개수 K(1 ≤ K ≤ 2500)이 주어진다. 그 다음 K줄에는 배추의 위치 X(0 ≤ X ≤ M-1), Y(0 ≤ Y ≤ N-1)가 주어진다. 두 배추의 위치가 같은 경우는 없다.
가로길이: M
세로길이: N
배추개수: K
BFS로 풀까,, DFS풀까 ~ 하다가
BFS는 큐로 푸는 문제가 좋으니까
이건 DFS로 걍 큐를 이용하지 않고 재귀를 이용해 풀었다.
풀이
import sys
sys.setrecursionlimit(10000)
t = int(input())
def dfs(x, y):
if x <= -1 or x >= m or y <= -1 or y >= n:
return 0
if graph[x][y] == 1:
graph[x][y] = 0
dfs(x - 1, y)
dfs(x, y - 1)
dfs(x + 1, y)
dfs(x, y + 1)
return 1
return 0
for _ in range(t):
m, n, k = map(int, input().split())
graph = [[0] * n for _ in range(m)]
for i in range(k):
x, y = map(int, input().split())
graph[x][y] = 1
result = 0
for j in range(m):
for r in range(n):
if dfs(j, r) == 1:
result += 1
print(result)
📌 근데 런타임 에러가 계속 났다.
찾아보니까 재귀 호출 1000번하면 런타임 에러래
그래서
sys.setrecursionlimit(10000)
이거 추가해주니까 바로 해결됐다.
오늘 많이 배웠다.