반응형
코드
from collections import deque
dx = [0,0,1,-1]
dy = [1,-1,0,0]
def bfs(graph,x,y):
queue = deque()
queue.append((x,y))
graph[x][y] = 0
count = 1
while queue:
x,y = queue.popleft()
for i in range(4): # 상하좌우 모두 확인
x_n = x + dx[i]
y_n = y + dy[i]
if x_n < 0 or x_n >= n or y_n < 0 or y_n >= n:
continue
if graph[x_n][y_n] == 1: # 아직 방문하지 않았다면
queue.append((x_n,y_n)) # 큐에 좌표 추가
count += 1
graph[x_n][y_n] = 0 # 방문한 곳은 0으로 바꿔줌
return count
n = int(input())
graph = []
for i in range(n):
graph.append(list(map(int,input())))
ans = []
for i in range(n):
for j in range(n):
if graph[i][j] == 1:
ans.append(bfs(graph,i,j))
print(len(ans))
ans.sort()
for i in ans:
print(i)
반응형
'알고리즘 > 그래프 탐색' 카테고리의 다른 글
[백준][Python] 4963번 섬의 개수 (0) | 2022.10.07 |
---|---|
[백준][Python] 11724번 연결 요소의 개수 (0) | 2022.10.06 |
[백준][Python] 1012번 유기농 배추 (0) | 2022.10.05 |
[백준][Python] 2178번 미로 탐색 (0) | 2022.10.04 |
[백준][Python] 2606번 바이러스 (0) | 2022.09.15 |
댓글