시작이 반

[백준] 1780번 (python 파이썬) 본문

알고리즘/백준

[백준] 1780번 (python 파이썬)

G_Gi 2021. 3. 8. 18:22
SMALL

https://www.acmicpc.net/problem/1780

NxN행렬을 검사한뒤 일괄된 숫자가 아니면 9등분 하는 문제이다.

9등분한 행렬을 각각 다시 재귀를 돌려서 검사한다.

 

백준 1021번 문제와 유사한 문제이다.

tmdrl5779.tistory.com/100

 

[백준] 1021번 (python 파이썬)

ex) 10 3 2 9 5 2 queue = 1 2 3 4 5 6 7 8 9 10 왼쪽으로 회전 1번 queue = 2 3 4 5 6 7 8 9 10 1 pop 9 queue = 3 4 5 6 7 8 9 10 1 오른쪽으로 회전 3번 queue = 9 10 1 3 4 5 6 7 8 pop 5 queue = 10 1 3 4 5..

tmdrl5779.tistory.com

n = int(input())
graph = [list(map(int, input().split())) for _ in range(n)]

one_count = 0
zero_count = 0
m_one_count = 0


def dnc(x, y, n):
    global one_count, zero_count, m_one_count

    check = graph[x][y]
    for i in range(x, x + n):
        for j in range(y, y + n):
            if check != graph[i][j]:
                check = -2
                break

    if check == -2:
        n = n // 3
        dnc(x, y, n)
        dnc(x, y + n, n)
        dnc(x, y + 2 * n, n)
        dnc(x + n, y, n)
        dnc(x + n, y + n, n)
        dnc(x + n, y + 2 * n, n)
        dnc(x + 2 * n, y, n)
        dnc(x + 2 * n, y + n, n)
        dnc(x + 2 * n, y + 2 * n, n)
    elif check == 1:
        one_count += 1
    elif check == 0:
        zero_count += 1
    else:
        m_one_count += 1


dnc(0, 0, n)
print(m_one_count)
print(zero_count)
print(one_count)
LIST