본문 바로가기
알고리즘/그래프 탐색

[백준][Python] 1012번 유기농 배추

by 임짠짠 2022. 10. 5.
반응형
 

1012번: 유기농 배추

차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 

www.acmicpc.net

 

 

 

코드

import sys
from collections import deque
dx = [0,0,-1,1]
dy = [-1,1,0,0]

def bfs(x,y):
	queue = deque()
	queue.append((x,y))
	while queue:
		x,y = queue.popleft()
		for i in range(4):
			nx = x + dx[i]
			ny = y + dy[i]
			if 0 <= nx < n and 0 <= ny < m:
				if worm[nx][ny] == 1:
					worm[nx][ny] = 0
					queue.append((nx,ny))

t = int(input())
for _ in range(t):
	count = 0
	m,n,num = map(int,input().split())
	worm = [[0]*m for _ in range(n)] 
	for _ in range(num):
		x,y = map(int,sys.stdin.readline().split())
		worm[y][x] = 1
	
	for i in range(n):
		for j in range(m):
			if worm[i][j] == 1:
				bfs(i,j)
				count += 1
	print(count)

 

설명

그래프의 칸을 하나씩 돌다가 값이 1인 칸을 발견하면 count를 1만큼 증가시키고 bfs를 수행하여 인접한 칸들을 모두 찾아 값을 0으로 바꿔주었다. 이렇게 하면 해당 구역은 모두 0으로 바껴서 중복되어 세어지지 않는다.

 

반응형

댓글