https://www.acmicpc.net/problem/1780
Solution
쿼드 트리 문제들과 마찬가지로 풀되 (참고: https://claude-u.tistory.com/269) 4사분면이 아닌 9사분면으로 나누어 푼다.
Python Code
#나 트리 함수 정의
def nine_tree(x, y, n):
global matrix, minus, zero, plus
type = matrix[y][x] #첫 타입과 나머지 타입이 같아야함
double_break = False #for문 탈출용 double_break
for i in range(x, x+n):
if double_break:
break
for j in range(y, y+n):
if matrix[j][i] != type: #하나라도 틀릴시에 재귀문 생성
k = n//3
#9분면으로 잘라 실행
nine_tree(x, y, k)
nine_tree(x + k, y, k)
nine_tree(x + 2*k, y, k)
nine_tree(x, y + k, k)
nine_tree(x + k, y+ k, k)
nine_tree(x + 2*k, y + k, k)
nine_tree(x, y + 2*k, k)
nine_tree(x + k, y + 2*k, k)
nine_tree(x + 2*k, y + 2*k, k)
double_break = True #탈출!
break
if not double_break:
if matrix[y][x] == -1:
minus += 1
elif matrix[y][x] == 0:
zero += 1
else:
plus += 1
N = int(input())
matrix = []
minus = 0
zero = 0
plus = 0
for _ in range(N):
matrix.append(list(map(int, input().split())))
nine_tree(0,0,N)
print(minus)
print(zero)
print(plus)
'Programming [Python] > 백준 알고리즘 솔루션' 카테고리의 다른 글
#221 백준 파이썬 [7576] 토마토 - BFS (0) | 2019.11.28 |
---|---|
#220 백준 파이썬 [11049] 행렬 곱셈 순서 (1) | 2019.11.27 |
#218 백준 파이썬 [1992] 쿼드트리 - 분할정복 (0) | 2019.11.22 |
#217 백준 파이썬 [2630] 색종이 만들기 - 분할 정복 (0) | 2019.11.22 |
#216 백준 파이썬 [10816] 숫자 카드 2 (0) | 2019.11.21 |