본문 바로가기

코딩테스트/Python

[Python] 백준 #1992 - 쿼드트리

문제


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

 

1992번: 쿼드트리

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

www.acmicpc.net

 

 

 

풀이


import sys
n = int(input())
arr = [list(map(int,list(sys.stdin.readline().strip()))) for _ in range(n)]

def tree(x,y,n):
    check = arr[x][y] # 체크할 기준 설정
    for i in range(x,x+n):
        for j in range(y,y+n):
            if check != arr[i][j]: # 다른게 있으면
                check = -1 # 다르다고 체크
                break
    if check == -1: # 다르면 쪼개기
        print("(",end="")
        n//=2
        tree(x,y,n) # 왼쪽 위
        tree(x,y+n,n) # 오른쪽 위
        tree(x+n,y,n) # 왼쪽 아래
        tree(x+n,y+n,n) # 오른쪽 아래
        print(")",end="")
    elif check == 0:
        print("0",end="")
    else:
        print("1",end="")

tree(0,0,n)

체크할 기준을 설정해주고 범위 내에 다른게 있으면 쪼개준다.