import sys
input = sys.stdin.readline
def d(x,y,n):
global a,b,c
first = arr[x][y]
for i in range(x,x+n):
for j in range(y,y+n):
if arr[i][j] != first:
n=n//3
for j in range(3):
for k in range(3):
d(x+j*n, y+k*n,n)
return
else:
if first == -1:
a += 1
if first == 0:
b += 1
if first == 1:
c += 1
n = int(input())
arr = [list(map(int,input().split())) for _ in range(n)]
a,b,c = 0,0,0
d(0,0,n)
print(a)
print(b)
print(c)
예제 입력을 예로 들자. 먼저 9X9칸의 종이를 리스트 arr로 입력받는다. 종이의 맨 왼쪽 위 칸(arr[0][0])을 기준으로 모든 81칸이 해당 칸과 일치하는지 이중 for문을 통해 확인한다. 중간에 일치하지 않으면 종이를 3등분하여 재귀적으로 확인한다.
주의할 점
1. if문에 return을 써서 해당 차례에 함수가 끝나도록 해야한다.
2. 전역변수를 쓸 경우 global 선언은 함수 안에서 해야한다.
3. [list(map(int,input().split())) for _ in range(n)] -> 대괄호를 까먹지 말자.