알고리즘
2630 색종이 만들기
유노비
2023. 10. 17. 22:24
반응형
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')
반응형