본문 바로가기
코딩 테스트/DFS + BFS

[백준 1012번] 유기농 배추 문제 풀이

by 서영선 2023. 9. 9.

< 문제 >

 

 

 

< 입출력 >

 

 

< 풀이 >

이 문제는 X, Y 가 바뀌어 있어 헷갈렸으나, DFS 문제인것을 파악하는 것은 쉬웠다.

문제를 풀때 입출력은 동일했으나, 계속 런타임 에러가 떴는데 sys.setrecursionlimit(10**6를 붙여 해결했다.

sys.setrecursionlimit(10**6) 은 파이썬의 기본 재귀 깊이 함수가 1000으로 얕아 런타임 에러가 뜰 때, 재귀 깊이를 늘려주기 위한 방법이다.

 

 

 

 

< 코드 >

import sys
sys.setrecursionlimit(10000)

readline = sys.stdin.readline
n = int(readline())

def dfs(x,y):
    if x<= -1 or x>=N or y<=-1 or y>=M:
        return False

    if arr[x][y] == 1:
        arr[x][y] = 0
        dfs(x - 1, y)
        dfs(x + 1, y)
        dfs(x, y - 1)
        dfs(x, y + 1)

        return True
    return False


for _ in range(n):
    M, N, K = map(int, readline().split())
    arr = [[0] * M for _ in range(N)]

    for _ in range(K):
        x, y =map(int, readline().split())
        arr[y][x] = 1

    result = 0
    for i in range(N):
        for j in range(M):
            if dfs(i, j):
                result +=1
    print(result)

 

 

 

 

댓글