

처음에 우예 푸노? 하다가 예전에 풀었던 게 있어서 참고를 하면서 풀었다.
우선 입력은 matrix로 받아주고, def count_b_w를 통해서 4개로 쪼개는 과정과 함께 count를 해주는 과정을 거쳤다.
- 입력받아주기
- 해당 정사각형내의 값이 모두 같은 값인지 확인하는 함수를 만들기
- 함수 내에서 값을 확인하고, 다른 값이 있으면 4등분하고, 그 내부에서 확인하도록 하기
- 다른 값이 없는 것이 확인 된다면, 해당 정사각형에 맞는 색에 +1 해주기
import sys
def count_b_w(row, col, N):
global blue_count, white_count
# 현재 위치의 색을 표기.
cur_position = matrix[row][col]
for i in range(row, row + N):
for j in range(col, col + N):
# 현재 위치의 색과 같은지 확인.
if cur_position != matrix[i][j]:
# 현재 위치의 색과 다르면 4등분 해서 다시 확인필요하니 아래처럼 확인.
next_n = N // 2
count_b_w(row, col, next_n)
count_b_w(row, col + next_n, next_n)
count_b_w(row + next_n, col, next_n)
count_b_w(row + next_n, col + next_n, next_n)
return
# for 문을 끝마치고 나오면(중간에 return당하면 여기 못옴) 해당 색에 +1해주기
if cur_position == 0:
white_count += 1
else:
blue_count += 1
return
# 입력받기
N = int(sys.stdin.readline())
matrix = []
for _ in range(N):
row = list(map(int, sys.stdin.readline().split()))
matrix.append(row)
blue_count, white_count = 0, 0
count_b_w(0,0,N)
print(white_count)
print(blue_count)