문제링크 : https://www.acmicpc.net/problem/1780
import sys
sys.setrecursionlimit(10**6)
read = lambda : sys.stdin.readline().strip()
cnt = [0]*3
# -1,0,1값을 cnt에 저장시킨다.
n = int(read())
matrix = [list(map(int, read().split())) for _ in range(n)]
def same(x, y, n):
# x, y서부터 n각형의 정사각형이 있는지 확인 하는 것
for i in range(x, x+n):
for j in range(y, y+n):
if matrix[x][y] != matrix[i][j]:
return False
return True
def solve(x, y, n):
if same(x, y, n):
cnt[matrix[x][y]+1] += 1
# -1을 0 ~ 1을 2로
return
m = n//3
for i in range(0, 3):
for j in range(0, 3):
# 3으로 나눈 것들로 점점 좁혀 나가는 것이다.
solve(x+i*m, y+j*m, m)
solve(0, 0, n)
for i in cnt:
print(i)