백준 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)

Categories:

Updated: