import sys
from collections import deque
import heapq
dx = [-1, 0, 1, 0]
dy = [0, 1, 0, -1]
q = deque()
heap = []
n = int(input())
board = [list(map(int, sys.stdin.readline().strip())) for _ in range(n)]
cnt = 0
vis = [[0] * n for _ in range(n)]
for i in range(n):
for j in range(n):
if board[i][j] == 1 and vis[i][j] == 0:
size = 1
cnt += 1
q.append([i,j])
vis[i][j] = 1
while q:
curX, curY = q.popleft()
for dir in range(4):
nx = curX + dx[dir]
ny = curY + dy[dir]
if nx < 0 or nx >= n or ny < 0 or ny >= n:
continue
if board[nx][ny] == 0 or vis[nx][ny]:
continue
q.append([nx,ny])
vis[nx][ny] = 1
size += 1
heapq.heappush(heap, size)
print(cnt)
for _ in range(cnt):
print(heapq.heappop(heap))
📌 배운점
dequq 큐처럼 사용하기
queue = dequq()
queue.append([i,j])
queue.popleft()
heapq는 출력할 때 조심해야한다
for _ in range(cnt):
print(heapq.heappop(heap))