N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1 중 하나가 저장되어 있다. 우리는 이 행렬을 다음과 같은 규칙에 따라 적절한 크기로 자르려고 한다.
이와 같이 종이를 잘랐을 때, -1로만 채워진 종이의 개수, 0으로만 채워진 종이의 개수, 1로만 채워진 종이의 개수를 구해내는 프로그램을 작성하시오.
첫째 줄에 N(1 ≤ N ≤ 37, N은 3k 꼴)이 주어진다. 다음 N개의 줄에는 N개의 정수로 행렬이 주어진다.
첫째 줄에 -1로만 채워진 종이의 개수를, 둘째 줄에 0으로만 채워진 종이의 개수를, 셋째 줄에 1로만 채워진 종이의 개수를 출력한다.
n = int(input())
arr = [list(map(int, input().split())) for _ in range(n)]
number = {-1 : 0, 0 : 0, 1 : 0}
def check(x, y, n, num):
for i in range(x, x+n):
for j in range(y, y+n):
if arr[i][j] != num:
return False
return True
def dac(x, y, n, num):
global cnt
if check(x, y, n, num):
number[num] += 1
else:
n = n // 3
dac(x, y, n, arr[x][y])
dac(x+n, y, n, arr[x+n][y])
dac(x+(2*n), y, n, arr[x+(2*n)][y])
dac(x, y+n, n, arr[x][y+n])
dac(x, y+(2*n), n, arr[x][y+(2*n)])
dac(x+n, y+n, n, arr[x+n][y+n])
dac(x+n, y+(2*n), n, arr[x+n][y+(2*n)])
dac(x+(2*n), y+n, n, arr[x+(2*n)][y+n])
dac(x+(2*n), y+(2*n), n, arr[x+(2*n)][y+(2*n)])
dac(0, 0, n, arr[0][0])
print(number[-1])
print(number[0])
print(number[1])