queue를 만들어서 확인할 색종이들을 저장해서 해결
- 전체에서 색이 다르다면, queue(꼭지점 네개)에 4등분 해서 넣어줌
- 같다면 blue, white 카운팅
import sys
from collections import deque
input = sys.stdin.readline
N = int(input())
arr = []
for i in range(N):
arr.append(list(map(int, input().split())))
white = 0
blue = 0
queue = deque([[0, 0, N, N]])
while queue:
x1, y1, x2, y2 = queue.popleft()
start = arr[x1][y1]
half = (x2 - x1)//2
flag = False
for i in range(x1, x2):
for j in range(y1, y2):
if arr[i][j] != start:
flag = True
queue.append([x1, y1, x1+half, y1+half])
queue.append([x1+half, y1, x2, y1+half])
queue.append([x1, y1+half, x1+half, y2])
queue.append([x1+half, y1+half, x2, y2])
break
if flag:
break
if not flag:
if start:
blue += 1
else:
white += 1
print(white)
print(blue)
'개발 > 알고리즘' 카테고리의 다른 글
[백준 1918] 후위 표기식 (python) (0) | 2021.03.29 |
---|---|
[백준 11724] 연결 요소의 개수 (python) (0) | 2021.03.19 |
[백준 2606] 바이러스 (python) (0) | 2021.03.19 |
[백준 1931] 회의실 배정 (python) (1) | 2021.03.18 |
[백준 11723] 집합 (python) (0) | 2021.03.18 |
최근댓글