알고리즘

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')
반응형