밤밭황제 2023. 1. 1. 19:46
N = int(input())
mp = []
dx = [1,-1, 0, 0]
dy = [0,0, 1, -1]
area = 0
arealst = []
cnt = 0
for i in range(N):
    mp.append(list(map(int, input())))

def dfs(x, y):
    global area
    mp[x][y] = 0
    for i in range(4):
        nx = x + dx[i]
        ny = y + dy[i]
        if 0 <= nx < N and 0 <= ny < N and mp[nx][ny] == 1:
            area += 1
            dfs(nx, ny) 

for i in range(N):
    for j in range(N):
        if mp[i][j] == 1:
            area =0
            dfs(i, j)
            cnt += 1
            arealst.append(area+1)

print(cnt)
arealst.sort()
for i in range(cnt):
    print(arealst[i])
728x90