Coding Test/백준(Python)

[백준/Python] 1012번(BFS,DFS)_유기농 배추

syunze 2024. 3. 12. 15:00

📌문제 유형

BFS,DFS (실버2)

 

📌문제

 

채점 현황

 

www.acmicpc.net

 

 

📌나의 문제풀이

import sys
sys.setrecursionlimit(10**6)

t = int(input())

def dfs(x_,y_):
    dx = [0,0,1,-1]
    dy = [1,-1,0,0]

    for i in range(4):
        nx = x_ + dx[i]
        ny = y_ + dy[i]
        if 0 <= nx < m and 0 <= ny < n:
            if maps[nx][ny] == 1 and visited[nx][ny] == 0:
                visited[nx][ny] = 1
                dfs(nx,ny)

while t > 0:
    # t번만큼 반복
    t -= 1
    m,n,k = map(int,input().split())
    maps = [[0 for _ in range(n)] for _ in range(m)]
    for _ in range(k):
        a,b = map(int,input().split())
        maps[a][b] = 1

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


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

    print(cnt)

 

📌리뷰

- DFS의 기본 포멧 : if 제어문 없음, dfs 재귀에 return 없음

728x90