반응형
https://www.acmicpc.net/problem/1012
답안
import sys
sys.setrecursionlimit(10**6)
def dfs(x, y):
if x <= -1 or x >= m or y <= -1 or y >= n:
return False
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 True
return False
for _ in range(int(input())):
n, m, k = map(int, input().split()) #열,행,배추개수
graph = [[0] * n for _ in range(m)]
for _ in range(k):
a, b = map(int, input().split())
graph[b][a] = 1
result = 0
for i in range(m):
for j in range(n):
if dfs(i,j) == True:
result += 1
print(result)
문제 설명을 잘 읽고 입력만 제대로 받으면
이 문제와 알고리즘이 유사한 문제이다.
내가 문제를 계속 틀렸었는데..
자꾸 RecursionError가 뜨는 것이다..!!
그래서 뭐가 잘못했나 정보를 찾아봤는데.
파이썬의 기본 재귀 깊이 제한은 1000이라고 배웠다.
그 제한을 해결하기 위해 답 코드 맨 윗줄을 보면
import sys
sys.setrecursionlimit(10**6)
이게 있을 텐데,
파이썬의 재귀 스택 공간을 100000으로 확장 시켜주는 코드이다.
괜히 잘못 풀었나 하면서 다른 걸 만지지 말고 RecursionError가 발생한다면 저 코드를 입력해서 스택 공간을 넓혀 주면 된다!
반응형
'BOJ > Python' 카테고리의 다른 글
백준 4963번 섬의 개수 파이썬 DFS (0) | 2022.02.07 |
---|---|
백준 11724번 연결 요소의 개수 파이썬 DFS (0) | 2022.02.06 |
백준 2606번 바이러스 파이썬 DFS (0) | 2022.02.05 |
백준 2667번 단지 번호 붙이기 파이썬 DFS (0) | 2022.02.04 |
백준 1260번 DFS와 BFS 파이썬 (0) | 2022.02.03 |