백준 2667 - 단지번호붙이기 (파이썬)
Updated:
Answer
from sys import stdin
input = stdin.readline
n = int(input())
matrix = [[int(j) for j in input().replace('\n', '')] for _ in range(n)]
answer = []
count = 0
def dfs(x, y):
if x < 0 or x >= n or y < 0 or y >= n:
return False
if matrix[x][y] == 1:
global count
matrix[x][y] = 0
count += 1
for nx, ny in (0, 1), (0, -1), (1, 0), (-1, 0):
dfs(x + nx, y + ny)
return True
return False
result = 0
for i in range(n):
for j in range(n):
if matrix[i][j] == 1:
if dfs(i, j):
answer.append(count)
result += 1
count = 0
answer.sort()
print(result)
for i in answer:
print(i)