728x90
2022.01.04
백준 1012 유기농 배추
# 1012
import sys
sys.setrecursionlimit(10**6)
def DFS(x,y):
if 0 > x or x >= N or 0 > y or y >= M:
return False
if arr[x][y] == 1:
arr[x][y] = 0
DFS(x-1,y)
DFS(x,y+1)
DFS(x+1,y)
DFS(x,y-1)
return True
T = int(input()) #테스트 케이스
for i in range(T):
M, N, K = map(int, input().split())
arr = [[0]*M for i in range(N)] # 배추밭의 2차원 배열
R = 0 # 배추흰벌레 마리 수
for j in range(K):
a, b = map(int, input().split())
arr[b][a] = 1
for ii in range(N):
for jj in range(M):
if DFS(ii,jj) == 1: # 배추밭의 좌표(0,0)부터 끝까지 확인
R += 1
print(R)
편법?
import sys
sys.setrecursionlimit(10**6)
서버의 재귀 깊이를 늘려주는 함수를 사용해서 간신히 풀었다.
아무래도 DFS 함수의 재귀로 불러오는 게 너무 많아서 그런 듯하다.
재귀를 줄이고 반복문을 늘리는 함수를 짜 봐야겠다.
728x90
'Algorithm' 카테고리의 다른 글
백준 2667 파이썬 (BFS풀이) (0) | 2022.01.07 |
---|---|
백준 2606 파이썬 (BFS풀이) (0) | 2022.01.06 |
BFS 알고리즘 정리 (0) | 2022.01.03 |
백준 2667 파이썬 (0) | 2022.01.01 |
DFS 알고리즘 정리 (0) | 2021.12.31 |