문제.
풀이.
쿼드트리를 이용한 방식과 비슷한데 쿼드트리는 4분할로 나눴다면 이 문제는 9분할로 나누기만 하면된다.
그리고 -1, 0, 1 을 구분해서 숫자를 카운트 해주면 된다.
소스코드.
import sys
def div_con(x, y, n):
global count, paper
num = paper[x][y]
check = 0
for i in range(x, x+n):
if check != 0:
break
for j in range(y, y+n):
if num != paper[i][j]:
"""
9분할로 나누기
"""
div_con(x, y, n//3)
div_con(x, y+(n//3), n//3)
div_con(x, y+(2*(n//3)), n//3)
div_con(x+(n//3), y, n//3)
div_con(x+(n//3), y + (n // 3), n // 3)
div_con(x+(n//3), y + (2 * (n // 3)), n // 3)
div_con(x + (2 *(n // 3)), y, n // 3)
div_con(x + (2 *(n // 3)), y + (n // 3), n // 3)
div_con(x + (2* (n // 3)), y + (2 * (n // 3)), n // 3)
check = 1
break
if check == 0 and num == -1:
count[0] += 1
elif check == 0 and num == 0:
count[1] += 1
elif check == 0 and num == 1:
count[2] += 1
N = int(sys.stdin.readline())
count = [0] * 3
paper = []
for i in range(N):
p = list(map(int, sys.stdin.readline().split()))
paper.append(p)
div_con(0, 0, N)
for i in count:
print(i)
'프로그래밍 > 백준' 카테고리의 다른 글
백준 2740 행렬 곱셈 - 파이썬 (0) | 2021.07.12 |
---|---|
백준 1629 곱셈 - 파이썬 (0) | 2021.07.12 |
백준 1992 쿼드트리 - 파이썬 (0) | 2021.07.12 |
백준 2630 색종이 만들기 - 파이썬 (0) | 2021.07.12 |
백준 11286 절대값 힙 - 파이썬 (0) | 2021.07.09 |