알고리즘/백준 문제풀이
[boj] 백준 1012 유기농 배추 python 풀이
감자156
2023. 4. 16. 01:48
반응형
대표적인 섬 찾기 bfs 문제. MAP 자체에 visited를 2 표시해서 풀이함. 0으로 표시할걸.. 생각이 짧았다
문제
https://www.acmicpc.net/problem/1012
풀이
import sys
import collections
input = sys.stdin.readline
move = [(-1,0),(0,1),(1,0),(0,-1)]
def bfs(i,j,MAP):
q = collections.deque()
q.append((i,j))
MAP[i][j] = 2 #visited
while q:
x,y = q.popleft()
for tx,ty in move:
nx = x + tx
ny = y + ty
if 0<=nx<N and 0<=ny<M and MAP[nx][ny] == 1:
q.append((nx,ny))
MAP[nx][ny] = 2 # visited
def find_island(MAP):
cnt = 0
for i in range(N):
for j in range(M):
if MAP[i][j] == 1:
bfs(i,j,MAP)
cnt += 1
return cnt
T = int(input().strip())
for _ in range(T):
M, N, K = map(int,input().split())
MAP = [[0 for _ in range(M)] for _ in range(N)]
for _ in range(K):
X,Y = map(int,input().split())
MAP[Y][X] = 1
print(find_island(MAP))
반응형