(Python) 1992. 쿼드 트리

접근하다

  • 왼쪽 상단 위치를 기준으로 nxn 크기를 비교하고 서로 다른 값이 있는지 확인합니다.
    • nxn을 분기로 나누는 재귀 호출(있는 경우)
    • 존재하지 않는 경우 왼쪽 상단에 값을 인쇄하십시오.
import sys
input = sys.stdin.readline

n = int(input())
arr = (input() for _ in range(n))

def quad_tree(cur_x, cur_y, num):
    cur = arr(cur_x)(cur_y)
    for i in range(cur_x, cur_x + num):
        for j in range(cur_y, cur_y + num):
            if cur != arr(i)(j):
                print("(", end="")
                quad_tree(cur_x, cur_y, num//2)
                quad_tree(cur_x,cur_y + num//2, num//2 )
                quad_tree(cur_x + num//2, cur_y, num//2)
                quad_tree(cur_x + num//2, cur_y + num//2, num//2)
                print(")", end="")
                return
    if cur == '0': #arr을 input으로 받지 않았기 때문에 char 비교
        print("0", end="")
        return
    if cur == '1':
        print("1", end="")

quad_tree(0, 0, n)