def make_paper(x,y,n, paper):
global white, blue
divide_paper = paper[x][y]
for i in range(x,x+n): # x ~ x+n 의 영역에서 색깔을 확인한다
for j in range(y,y+n): # y ~ y+n 의 영역에서 색깔을 확인한다
if divide_paper != paper[i][j]:
divide_paper = -1
break
if divide_paper == 0:
white += 1
elif divide_paper == 1:
blue += 1
else:
n = n//2 # 입력크기//2 의 크기만큼 계속해서 영역을 좁혀가면 색깔을 확인한다
make_paper(x,y,n, paper)
make_paper(x,y+n,n, paper)
make_paper(x+n, y,n, paper)
make_paper(x+n, y+n,n, paper)
n = int(sys.stdin.readline())
paper = [list(map(int,sys.stdin.readline().rstrip().split())) for _ in range(n)]
white, blue = 0, 0
make_paper(0,0,n, paper) # (0,0) 부터, 색종이의 색깔 확인
print(white,blue, sep='\n')
반응형
'알고리즘' 카테고리의 다른 글
[백준] 2720 세탁소 사장 동혁 (2) | 2023.10.17 |
---|---|
[백준] 2675 문자열반복 (0) | 2023.10.17 |
[백준] 2563 색종이 (0) | 2023.10.17 |
[백준]2562 최댓값 (0) | 2023.10.17 |
[백준] 2231 분배합 (0) | 2023.10.17 |