https://www.acmicpc.net/problem/1012
문제풀이
import sys
input=sys.stdin.readline
sys.setrecursionlimit(10**9)
def dfs(i,j):
dx=[-1,1,0,0]
dy=[0,0,-1,1]
visted[i][j]=True
for k in range(0,4):
next_i=i+dx[k]
next_j=j+dy[k]
if 0<=next_i<N and 0<=next_j<M:
if matrix[next_i][next_j]==1 and not visted[next_i][next_j]:
dfs(next_i,next_j)
#테스트 케이스 받기
T=int(input())
#테스트 케이스 횟수 만큼 수행
for _ in range(0,T):
#지렁이 수
cnt=0
# 가로, 세로, 배추 수
M,N,K=map(int,input().split())
# 크기에 맞게 배추밭 만들어주기
matrix=[[0 for _ in range(0,M)] for _ in range(0,N)]
#방문여부 판단
visted=[[False for _ in range(0,M)] for _ in range(0,N)]
#배추 수 만큼 반복해서 배추 심기
for _ in range(0,K):
X,Y=map(int,input().split())
matrix[Y][X]=1
for i in range(0,N):
for j in range(0,M):
if matrix[i][j]==1 and not visted[i][j]:
dfs(i,j)
cnt+=1
print(cnt)
정리
첫 제출을 했을 때 런타임에러(재귀에러)가 발생했다.
sys.setrecursionlimit(10**9)를 코드에 추가하니 정답으로 처리되었다.
재귀에러가 발생했던 이유는 재귀 깊이가 파이썬 최대 재귀 깊이보다 깊어져서 발생한 것이였다.
해결하기위해 최대 재귀 깊이를 크게 설정해주는 코드를 넣었다.
참고자료
'코딩테스트 > 백준' 카테고리의 다른 글
[백준] #13335 트럭 (python) (0) | 2024.05.17 |
---|---|
[백준] #11053 가장 긴 증가하는 부분 수열 (python) (0) | 2024.05.17 |
[백준] #1138 한 줄로 서기 (python) (0) | 2024.05.16 |
[백준] #2667 단지번호붙이기 (python) (0) | 2024.05.16 |
[백준] #2178 미로 탐색 (python) (0) | 2024.05.14 |