- Divide & Conquer -> 재귀로 풀이
- conquer 함수에서 (0, 0)부터 시작하여 Paper를 순회함
-> 만약 처음 색과 다른 색을 만났다면 정사각형을 4부분으로 나누어 재귀 호출
-> return 이후에 color에 따라 색 count를 1 증가시켜줌
import sys
def conquer(x, y, N):
global white; global blue
color = Paper[x][y]
for i in range(x, x + N):
for j in range(y, y + N):
if Paper[i][j] != color:
conquer(x, y, N//2)
conquer(x, y + N//2, N//2)
conquer(x + N//2, y, N//2)
conquer(x + N//2, y + N//2, N//2)
return
if color == 0:
white += 1
else:
blue += 1
N = int(input())
Paper = []
for n in range(N):
Paper.append(list(map(int, sys.stdin.readline()[:-1].split())))
white = 0; blue = 0
conquer(0, 0, N)
print(white); print(blue)