Algorithm/BFS, DFS
[백준] 1012번 유기농 배추
등촌동 꼬북이
2020. 9. 9. 03:47
굉장히 쉬운 문제인데
내가 Queue를 다루는거에 좀 익숙치 않아서?
라기 보단 좀 코드 라인을 줄이겠다고 꼼수부리다가 꼬여서
엄청 헤멧지만.. 그거 아니였으면 금방 풀었을 문제
난이도가 쉽다.. 그냥 하던거 그대로 풀면됨
from queue import Queue
def BFS(x, y):
que = Queue()
que.put([x, y]) # Queue 초기화시에 put 금지
visited[x][y] = 1
while not que.empty():
tx, ty = que.get()
for i in range(len(direction)):
nx = tx + direction[i][0]
ny = ty + direction[i][1]
if 0 <= nx < h and 0 <= ny < w:
if not visited[nx][ny] and mapData[nx][ny]:
que.put([nx, ny])
visited[nx][ny] = 1
counter.append(0)
N = int(input())
for _ in range(N):
w, h, k = map(int, input().split())
mapData = [[0] * w for _ in range(h)]
visited = [[0] * w for _ in range(h)]
direction = [[-1, 0], [1, 0], [0, 1], [0, -1]]
counter = []
for _ in range(k):
y, x = map(int, input().split())
mapData[x][y] = 1
for i in range(h):
for j in range(w):
if mapData[i][j] and not visited[i][j]:
BFS(i, j)
print(len(counter))