728x90
반응형
문제
https://www.acmicpc.net/problem/1012
문제 해결방법
bfs 로 해결 가능
graph[y][x] == 1 인 곳에서 검색을 시작하여
인접한 부분을 모두 0으로 변경한 뒤에 count++
문제 풀이
import sys
from collections import deque
T = int(sys.stdin.readline().strip())
dx = [0, 0, 1, -1]
dy = [1, -1, 0, 0]
for _ in range(T):
M, N, K = map(int, sys.stdin.readline().strip().split())
graph = [[0] * M for _ in range(N)]
for _ in range(K):
x, y = map(int, sys.stdin.readline().strip().split())
graph[y][x] = 1
def bfs(x, y):
queue = deque()
queue.append((x, y))
graph[y][x] = 0
while queue:
x, y = queue.popleft()
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if nx < 0 or nx >= M or ny < 0 or ny >= N:
continue
if graph[ny][nx] == 1:
graph[ny][nx] = 0
queue.append((nx, ny))
return 1
count = 0
for i in range(M):
for j in range(N):
if graph[j][i] == 1:
count += dfs(i, j)
print(count)
728x90
반응형
'IT > 알고리즘' 카테고리의 다른 글
[Python] 백준 11724 - 연결 요소의 개수 (0) | 2021.11.07 |
---|---|
[Python] 백준 7576 - 토마토 (0) | 2021.11.06 |
[Python] 백준 2667 - 단지번호붙이기 (0) | 2021.11.06 |
프로그래머스 - 가장 큰 정사각형 찾기 (0) | 2021.01.23 |
프로그래머스 - 나머지 한 점 (0) | 2021.01.22 |