solution
1. 사분면을 나눌 때 괄호 추가
2. (x, y) → (y, x)
# 1992, 쿼드트리
import sys
def com(x, y, n):
check = bw[x][y]
global res
for i in range(x, x + n):
for j in range(y, y + n):
if bw[i][j] != check: # 영상이 같은 색이 아님
print('(', end='')
com(x, y, n // 2) # 1
com(x, y + n // 2, n // 2) # 2
com(x + n // 2, y, n // 2) # 3
com(x + n // 2, y + n // 2, n // 2) # 4
print(')', end='')
return
if check == 0: # 영상이 모두 0
print('0', end='')
return
else: # 영상이 모두 1
print('1', end='')
return
n = int(sys.stdin.readline())
bw = [list(map(int, sys.stdin.readline().rstrip())) for _ in range(n)]
res = ""
com(0, 0, n)
print(res)
29380KB
68ms
문제 출처 https://www.acmicpc.net/problem/1992
1992번: 쿼드트리
첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1≤N ≤64의 범위를 가진다. 두 번째 줄부터는 길이 N 의 문자열이 N 개 들어온다. 각 문자열은 0 또는
www.acmicpc.net
'알고리즘 > 분할정복' 카테고리의 다른 글
파이썬 | 백준 | 1074 | Z (0) | 2020.09.03 |
---|