문제풀이/기타

[파이썬] [분할정복] 백준 1992 쿼드트리

승무_ 2022. 2. 23. 12:21

문제

https://www.acmicpc.net/problem/1992

 

1992번: 쿼드트리

첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또

www.acmicpc.net

 

코드

import sys
input=sys.stdin.readline

n=int(input())
array=[list(map(int, list(input().rstrip()))) for _ in range(n)]

result=[]

def make(n,movie):
    count=0
    global result
    for i in range(n):
        count+=sum(movie[i])

    if count==0:
        result.append("0")
    elif count==n*n:
        result.append("1")
    else:
        result.append("(")
        temp=[movie[i][:n//2] for i in range(n//2)]
        make(n//2,temp)
        temp=[movie[i][n//2:] for i in range(n//2)]
        make(n//2,temp)
        temp=[movie[i][:n//2] for i in range(n//2,n)]
        make(n//2,temp)
        temp = [movie[i][n//2:] for i in range(n // 2, n)]
        make(n // 2, temp)
        result.append(")")
    return "".join(result)

print(make(n,array))