문제풀이:https://www.acmicpc.net/problem/2630
다루는 주제: 분할 정복
import sys
N = int(sys.stdin.readline())
square = [list(map(int, sys.stdin.readline().split())) for _ in range(N)]
white = 0
blue = 0
def cut(row, column, n):
global white, blue
color = square[row][column]
for i in range(row, row + n):
for j in range(column, column + n):
if color != square[i][j]:
cut(row, column, n // 2) # 1사분면
cut(row, column + n // 2, n // 2) # 2사분면
cut(row + n // 2, column, n // 2) # 3사분면
cut(row + n // 2, column + n // 2, n // 2) # 4사분면
return
if color == 0:
white += 1
else:
blue += 1
cut(0, 0, N)
print(white)
print(blue)
'Algorithm > 백준(파이썬)' 카테고리의 다른 글
백준 6549 파이썬(Python) 문제풀이 히스토그램에서 가장 큰 직사각형 (0) | 2023.04.17 |
---|---|
백준 1629 파이썬(Python) 문제풀이 곱셈 (0) | 2023.04.16 |
백준 8983 파이썬(Python) 문제풀이 사냥꾼 (0) | 2023.04.16 |
백준 2470 파이썬(Python) 문제풀이 두 용액 (0) | 2023.04.15 |
백준 2110 파이썬(Python) 문제풀이 공유기 설치 (0) | 2023.04.15 |