[백] 1012 유기농 배추 - 오랜만에 bfs

serotonins·2023년 6월 27일
1

Coding Q

목록 보기
15/17

아 깔끔하고 개운하게 풀었다

from collections import deque

T = int(input())

for t in range(T):
  c, r, b = map(int, input().split())
  bat = [[0 for _ in range(c)] for _ in range(r)]
  
  for i in range(b):
    x, y = map(int, input().split())
    bat[y][x] = 1
  
  deq = deque()
  dy, dx = [0, 1, 0, -1], [1, 0, -1, 0]
  result = 0
  
  for y in range(r):
    for x in range(c):
      if bat[y][x] == 1: 
        result += 1
        bat[y][x] = -1
        deq.append((y,x))
        
        while deq:
          ny, nx = deq.popleft()
          for i in range(4):
            my, mx = ny + dy[i], nx + dx[i]
            if my < 0 or my >= r or mx < 0 or mx >= c: pass
            elif bat[my][mx] == 1: 
              deq.append((my,mx))
              bat[my][mx] = -1
  
  print(result)

0개의 댓글