여름의 서재

[백준] 2630_색종이 만들기 본문

알고리즘/BOJ

[백준] 2630_색종이 만들기

엉아_ 2021. 8. 12. 01:25
728x90
N = int(input())
matrix = []
blue = 0
white = 0

#matrix 받기
for _ in range(N):
    matrix.append(list(map(int, input().split())))
    
def quad_tree(x, y, n):
    global matrix, blue, white #주어진 배열과 색 카운트 끌어오기
    color = matrix[y][x] #첫 색과 나머지 색이 같아야함
    double_break = False #for문 탈출용 double_break
    
    for i in range(x, x+n):
        if double_break:
            break
            
        for j in range(y, y+n):
            if matrix[j][i] != color: #하나라도 틀릴시에 재귀문 생성
                quad_tree(x, y, n//2) #2사분면
                quad_tree(x + n//2, y, n//2) #1사분면
                quad_tree(x, y + n//2, n//2) #3사분면
                quad_tree(x + n//2, y + n//2, n//2) #4사분면
                double_break = True #탈출!
                break
    
    if not double_break:
        if matrix[y][x] == 1: #파란색이라면
            blue += 1
        else:
            white += 1 #흰색이라면

quad_tree(0, 0, N)
print(white)
print(blue)

'알고리즘 > BOJ' 카테고리의 다른 글

[백준] 5567_결혼식  (0) 2021.08.12
[백준] 4949_균형잡힌 세상  (0) 2021.08.12
[백준] 1992_쿼드트리  (0) 2021.08.12
[백준] 1931_회의실 배정  (0) 2021.08.12
[백준] 1927_최소 힙  (0) 2021.08.12
Comments