백준 / 1012 / 유기농 배추 (dfs)

맹민재·2023년 4월 12일
0

알고리즘

목록 보기
65/134
import sys
sys.setrecursionlimit(10**6)
direction = [[1,0], [-1,0], [0,1], [0,-1]]

def dfs(n,m,x,y):
    visited[x][y] = True
    
    for d in direction:
        nx, ny = x+d[0], y +d[1]
        if 0 <= nx < n and 0 <= ny < m and maps[nx][ny] == 1:
            if not visited[nx][ny]:
                visited[nx][ny] = True
                dfs(n,m,nx, ny)


T = int(input())
for _ in range(T):
    m, n, k = [int(v) for v in input().split()]
    maps = [[0]*m for _ in range(n)]
    visited = [[False]*m for _ in range(n)]
    for _ in range(k):
        y, x = [int(v) for v in input().split()]
        maps[x][y] = 1

    result = 0
    for x in range(n):
        for y in range(m):
            if not visited[x][y] and maps[x][y] == 1:
                dfs(n,m,x,y)
                result += 1
    print(result)

dfs로 해결한 문제

n * m 크기의 배열을 만든 후 배추 위치에 1을 두고 dfs 진행


dfs를 이해하고 있다면 어렵지 않은 문제이다.

profile
ㄱH ㅂrㄹ ㅈr

0개의 댓글