유기농 배추 [1012] with 파이썬 본문
https://www.acmicpc.net/problem/1012
1012번: 유기농 배추
차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 �
www.acmicpc.net
import sys
sys.setrecursionlimit(100000)
def dfs(x, y):
visited[x][y] = True
directions = [(-1,0),(1,0),(0,-1),(0,1)]
for dx, dy in directions:
nx, ny = x+dx, y+dy
if nx < 0 or nx >= n or ny < 0 or ny >= m:
continue
if arr[nx][ny] and not visited[nx][ny]:
dfs(nx, ny)
for _ in range(int(input())):
m, n, k = map(int, input().split())
arr = [[0] * m for _ in range(n)]
visited = [[False]*m for _ in range(n)]
for _ in range(k):
y, x = map(int, input().split()) # col row
arr[x][y] = 1
result = 0
for i in range(n):
for j in range(m):
if arr[i][j] and not visited[i][j]:
dfs(i,j)
result += 1
print(result)
--------------
import sys
sys.setrecursionlimit(10000)
t = int(input())
b, ck = [], []
# Flood Fill
# 전체 탐색하고 탐색한 곳을 다시 탐색하지 않는 것이 핵심
dx, dy = [1,0,-1,0], [0,1,0,-1]
def dfs(x, y):
global b, ck
if ck[x][y] == 1:
return
ck[x][y] = 1
for i in range(4):
xx, yy = x + dx[i], y + dy[i]
if b[xx][yy] == 0 or ck[xx][yy]:
continue
dfs(xx, yy)
def process():
global b, ck
m, n, k = map(int, input().split())
# 배열 크기를 1씩 증가 시킴
b = [[0 for i in range(m+2)] for _ in range(n+2)]
ck = [[0 for i in range(m+2)] for _ in range(n+2)]
for _ in range(k):
x, y = map(int, input().split())
b[y+1][x+1] = 1
ans = 0
for i in range(1,n+1):
'Algorithms > BFS and DFS' 카테고리의 다른 글
바이러스 [2606] with 파이썬 (0) | 2020.06.02 |
---|---|
벽 부수고 이동하기 [2206] with 파이썬 (0) | 2020.06.02 |
탈출 [3055] with 파이썬 (0) | 2020.06.02 |
효율적인 해킹 [1325] with 파이썬 (0) | 2020.06.01 |
DFS와 BFS 분류 [1260] with 파이썬 (0) | 2020.06.01 |