본문 바로가기

코딩 이야기/백준 풀이

백준 1012번: 유기농 배추 파이썬 코드(dfs)

반응형

https://upload.wikimedia.org/wikipedia/commons/thumb/c/c3/Python-logo-notext.svg/600px-Python-logo-notext.svg.png

import sys
sys.setrecursionlimit(100000)
t = int(sys.stdin.readline())

xx = [-1,1,0,0]
yy = [0,0,-1,1]


def dfs(a, b):
    graph[a][b] = -1
    for i in range(4):
        if 0 <= a+one[i] < n and 0 <= b+two[i] < m:
            if graph[a+xx[i]][b+yy[i]] == 1:
                dfs(a+xx[i], b+yy[i])
    return


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

 

맨 처음 인접리스트로 풀려하였다가 괜히 산으로 가는 것 같아서 인접행렬로 바꾼 후 dfs로 풀었다. 

딱히 획기적인 방법으로 푼것은 아니고 그냥 평범한 풀이.

반응형