코테 준비/분할정복

[백준] 1992. 쿼드트리

imsmile2000 2023. 1. 9. 04:22

색종이 문제랑 똑같은데 출력 형식만 다름

n=int(input())
graph=[[0]*n for _ in range(n)]
for i in range(n):
    graph[i]=list(map(int,input()))
result=[]
def quad_tree(n,div_graph):
    global result
    one_num=0
    for i in range(n):
        one_num+=sum(div_graph[i])
    if one_num==0:
        result.append(0)
    elif one_num==n**2:
        result.append(1)
    else:
        result.append('(')
        divide=[div_graph[i][:n//2] for i in range(n//2)] #사각형 네개로 나눴을 때 왼쪽 위
        quad_tree(n//2,divide)
        divide=[div_graph[i][n//2:] for i in range(n//2)] #오른쪽 위
        quad_tree(n//2,divide)
        divide=[div_graph[i][:n//2] for i in range(n//2,n)] # 왼쪽 아래
        quad_tree(n//2,divide)
        divide=[div_graph[i][n//2:] for i in range(n//2,n)] # 오른쪽 아래
        quad_tree(n//2,divide)
        result.append(')')
quad_tree(n,graph)
for i in result:
    print(i,end='')