본문 바로가기
Beakjoon&프로그래머스/파이썬

[백준/파이썬] 1012번 유기농 배추

by 현장 2022. 1. 11.

-코드

from collections import deque


def bfs(X, Y):
    queue = deque([[X, Y]])
    move_x, move_y = [-1, 1, 0, 0], [0, 0, -1, 1]
    while queue:
        a, b = queue.popleft()
        for i in range(4):
            moved_x = a + move_x[i]
            moved_y = b + move_y[i]
            if 0 <= moved_x < n and 0 <= moved_y < m and graph[moved_x][moved_y] == 1:
                graph[moved_x][moved_y] = 0
                queue.append([moved_x, moved_y])


for _ in range(int(input())):
    m, n, k = map(int, input().split())
    graph = [[0] * m for i in range(n)]
    cnt = 0
    for _ in range(k):
        x, y = map(int, input().split())
        graph[y][x] = 1
    for i in range(n):
        for j in range(m):
            if graph[i][j] == 1:
                bfs(i, j)
                graph[i][j] = 0
                cnt += 1
    print(cnt)

배추 흰 지렁이 주위를 0으로 만들면 되는 것을 한참 뒤에 이해를 해서 좀 더 걸렸고 4개만 0으로 만들면 되어서 for문을 안 쓰고 만들려고 했으나 해결이 되지 않아 검색을 해보니 리스트를 만들면 해결하면 간단히 해결이 되었습니다. 또한 범범위 문제와 if문을 잘못 설정하여 틀렸었습니다. bfs가 이해정도가 얕아서 응용이 잘 안 되는 것 같아 더 풀어 봐야겠습니다.