[Algorithm] 1012.py - 유기농 배추

Jifrozen·2021년 6월 4일
0

Algorithm

목록 보기
6/70

유기농 배추

단지 세기? 와 그냥 똑같은 문제이다.
우선 런타임 에러 (RecursionError)가 계속 떠서 그부분이 좀 힘들엇다.
RecursionError는 재귀와 관련된 에러입니다. 가장 많이 발생하는 이유는 Python이 정한 최대 재귀 깊이보다 재귀의 깊이가 더 깊어질 때이라고 한다.
그렇기 때문에 파이썬에서 최대 재귀 깊이를 늘려줘야한다.
import sys

sys.setrecursionlimit(10000)
이걸 추가함으로 해결햇다

import sys

sys.setrecursionlimit(10000)

T = int(input())
count = []
for t in range(T):
    m, n, k = map(int, input().split())

    dx = [0, 0, -1, 1]
    dy = [1, -1, 0, 0]

    data = [[0] * m for _ in range(n)]
    visited = [[0] * m for _ in range(n)]

    result = 0

    for i in range(k):
        x, y = map(int, input().split())
        data[y][x] = 1


    def dfs(a, b):
        visited[a][b] = 1
        for i in range(4):
            if n > a + dy[i] >= 0 and m > b + dx[i] >= 0:
                if visited[a + dy[i]][b + dx[i]] == 0 and data[a + dy[i]][b + dx[i]] == 1:
                    visited[a + dy[i]][b + dx[i]] = 1
                    dfs(a + dy[i], b + dx[i])


    for i in range(n):
        for j in range(m):
            if visited[i][j] == 0 and data[i][j] == 1:
                dfs(i, j)
                result += 1

    count.append(result)

for i in range(len(count)):
    print(count[i])
    

0개의 댓글