문제 접근
간단한 bfs 너비우선탐색 문제이다.
1) 밭을 돌면서 1을 발견할 때마다 bfs를 실행한다.
2) bfs 안에서, 이어진 1인 곳들을 방문하며 0으로 바꿔놓는다.
3) bfs가 끝날 때마다 정답에 1을 더한다.
정답 코드
#1012번: 유기농 배추
import sys
from collections import deque
def bfs(field, x, y):
queue = deque()
queue.append((x, y))
while queue:
cur = queue.popleft()
dx, dy = [0, 1, -1, 0], [1, 0, 0, -1]
for i in range(4):
nx, ny = cur[0] + dx[i], cur[1] + dy[i]
if 0 <= nx < n and 0 <= ny < m and field[nx][ny] == 1:
queue.append((nx, ny))
field[nx][ny] = 0
return 1
t = int(sys.stdin.readline().rstrip())
for _ in range(t):
n, m, k = map(int, sys.stdin.readline().split())
field = [[0] * m for _ in range(n)]
start_points = []
count = 0
for _ in range(k):
i, j = map(int, sys.stdin.readline().split())
field[i][j] = 1
start_points.append((i, j))
for i in range(n):
for j in range(m):
if field[i][j] == 1:
count += bfs(field, i, j)
print(count)
1012번: 유기농 배추
차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에
www.acmicpc.net
'알고리즘 > 백준' 카테고리의 다른 글
[백준 알고리즘] 1780번: 종이의 개수 (Python / 파이썬) (0) | 2024.01.22 |
---|---|
[백준 알고리즘] 2630번: 색종이 만들기 (Python / 파이썬) (0) | 2024.01.22 |
[백준 알고리즘] 7576번: 토마토 (Python / 파이썬) (0) | 2024.01.19 |
[백준 알고리즘] 2504번: 괄호의 값 (Python / 파이썬) (0) | 2024.01.18 |
[백준 알고리즘] 10799번: 쇠막대기 (Python / 파이썬) (2) | 2024.01.18 |