[백준 1012번/실버2] 유기농 배추 (파이썬 / dfs)

밀루·2023년 3월 27일
0

백준 문제풀이

목록 보기
7/51

https://www.acmicpc.net/problem/1012

import sys
sys.setrecursionlimit(10**6)


def dfs(x, y):
    dy = [0, 0, -1, 1]
    dx = [1, -1, 0, 0]
    for i in range(4):
        ax = x+dx[i]
        ay = y+dy[i]
        if ax >= 0 and ay >= 0 and ax < m and ay < n:
            if graph[ay][ax] == 1:
                graph[ay][ax] = -1
                dfs(ax, ay)

if __name__ == "__main__":
    T = int(input())
    for _ in range(T):
        count = 0
        m, n, k = map(int, sys.stdin.readline().split())
        graph = [[0 for _ in range(m)] for _ in range(n)]
        for _ in range(k):
            x, y = map(int, sys.stdin.readline().split())
            graph[y][x] = 1
        for x in range(m):
            for y in range(n):
                if graph[y][x] == 1:
                    dfs(x, y)
                    count += 1
        print(count)

Tech:

  1. setRecursion을 파이썬 맥스인 10** 6까지 해주는 게 좋음
  2. graph(y)(x)
  3. visited를 안 쓰고 -1로 표시하는 것도 괜찮은듯.

https://hei-jayden.tistory.com/100 <- 이 코드보다 실행 속도가 훨씬 빠른데, 이유를 알 수 없다.

profile
벨로그에 틀린 코드나 개선할 내용이 있을 수 있습니다. 지적은 언제나 환영합니다.

0개의 댓글