1번의 하위 항목이 2번의 조건문 아래로 겹치는 것은 구현 할 때,
값이 1이 아니라면 continue로 바꿔서 코드를 조금 더 깔끔하게 바꿨습니다.
from collections import deque
queue = deque()
N = int(input())
next_rows = [0, 0, 1, -1]
next_cols = [1, -1, 0, -0]
apts = [list(map(int, input())) for _ in range(N)]
results = []
for row in range(N):
for col in range(N):
if apts[row][col] != 1:
continue
apts[row][col] = 0
queue.append([row, col])
count = 1
while queue:
r, c = queue.popleft()
for i in range(4):
nr, nc = r + next_rows[i], c + next_cols[i]
if 0 <= nr < N and 0 <= nc < N and apts[nr][nc] == 1:
count += 1
apts[nr][nc] = 0
queue.append([nr, nc])
results.append(count)
print(len(results))
print('\n'.join(map(str, sorted(results))))