본문 바로가기

매일매일 (Everyday)

[BOJ] 분할정복 - 색종이 만들기 - Python

# 2630: 색종이 만들기 <분할 정복>
n = int(input())
matrix = []
for _ in range(n) :
    matrix.append(list(map(int, input().split())))

result = []

# Divided-and-Conquer
def DC(n, x, y) :
    color = matrix[x][y]

    for i in range(x, x+n) :
        for j in range(y, y+n) :
            if color != matrix[i][j] :
                DC(n // 2, x+(n // 2), y)
                DC(n // 2, x, y+(n // 2))
                DC(n // 2, x+(n // 2), y+(n // 2))
                DC(n // 2, x, y)
                return
    if color == 0 :
        result.append(0)

    else :
        result.append(1)

DC(n, 0, 0)
print(result.count(0))
print(result.count(1))