https://www.acmicpc.net/problem/2667
연결된 집의 단지수를 출력하고, 각 단지에 속하는 집의 수를 오름차순으로 출력하는 문제이다.
문제를 잘 읽지않아서 이전 문제와 마찬가지로 삽질을 했다. ⛏
N = int(input())
li = [list(input().rstrip()) for _ in range(N)]
ans = []
dx = [1,-1,0,0]
dy = [0,0,-1,1]
for i in range(N):
for j in range(N):
if li[i][j] == "1":
cnt = 1
li[i][j] = "0"
q = [(i,j)]
while q:
x,y = q.pop(0)
for k in range(4):
nx = x + dx[k]
ny = y + dy[k]
if 0 <= nx < N and 0 <= ny < N:
if li[nx][ny] == "1":
q.append((nx,ny))
li[nx][ny] = "0"
cnt += 1
ans.append(cnt)
ans.sort()
print(len(ans))
for i in ans:
print(i)