解法1
考え方
サイズ1のバツの中心をメモしておく.その後,それぞれの中心に対し,サイズがどれだけか調べる.回答例
H, W = map(int, input().split()) C = [list(input()) for _ in range(H)] N = min(H, W) ans = [0] * N center = [] for i in range(1, H - 1): for j in range(1, W - 1): if (C[i - 1][j - 1] == '#' and C[i - 1][j + 1] == '#' and C[i][j] == '#' and C[i + 1][j - 1] == '#' and C[i + 1][j + 1] == '#'): center.append((i, j)) for i, j in center: size = 0 while True: if i > 0 and j > 0 and C[i - 1][j - 1] == '#': size += 1 i -= 1 j -= 1 else: break ans[size - 1] += 1 print(*ans)