|
| 1 | + |
| 2 | +import sys |
| 3 | + |
| 4 | +def recursion(paper, row_start, col_start, step): |
| 5 | + # 종이가 같은지 검사 |
| 6 | + result = check_paper_same(paper, row_start, col_start, step) |
| 7 | + |
| 8 | + # 같지 않다면 9분할한뒤 각각을 재귀적으로 검사 |
| 9 | + if result == 2: |
| 10 | + for i in range(3): |
| 11 | + for j in range(3): |
| 12 | + row = row_start + (i * step // 3) |
| 13 | + col = col_start + (j * step // 3) |
| 14 | + recursion(paper, row, col, step // 3) |
| 15 | + else: |
| 16 | + # 종이의 칸이 다 같은 경우 |
| 17 | + answer[result] += 1 |
| 18 | + |
| 19 | + |
| 20 | + |
| 21 | +def check_paper_same(paper, row_start, col_start, step): |
| 22 | + base = paper[row_start][col_start] |
| 23 | + for i in range(row_start, row_start + step): |
| 24 | + for j in range(col_start, col_start + step): |
| 25 | + if paper[i][j] != base: |
| 26 | + return 2 |
| 27 | + return base |
| 28 | + |
| 29 | + |
| 30 | +inp = sys.stdin.readline |
| 31 | + |
| 32 | +n = int(inp()) |
| 33 | + |
| 34 | +paper = [] |
| 35 | + |
| 36 | +# 각각 -1, 0, 1로만 이루어진 종이의 개수 저장 튜플 |
| 37 | +global answer |
| 38 | +answer = {-1: 0, 0: 0, 1: 0} |
| 39 | + |
| 40 | +for i in range(n): |
| 41 | + paper.append(list(map(int, inp().split()))) |
| 42 | + |
| 43 | +recursion(paper, 0, 0, n) |
| 44 | + |
| 45 | +print('\n'.join(str(value) for value in answer.values())) |
0 commit comments