본문 바로가기

백준 문제풀이

1780 - 종이의 개수 (silver 2)

"""
1780 - 종이의 개수 (silver 2)
"""
import sys

input = sys.stdin.readline

minus = 0
zero = 0
plus = 0


def div_arr(x, y, N):
    global minus, zero, plus

    check_arr = arr[x][y]
    for i in range(x, x + N):
        for j in range(y, y + N):
            if check_arr != arr[i][j]:
                for p in range(3):
                    for q in range(3):
                        div_arr(x + p * N // 3, y + q * N // 3, N // 3)
                return
    if check_arr == -1:
        minus += 1
    elif check_arr == 0:
        zero += 1
    else:
        plus += 1


N = int(input().rstrip())

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

div_arr(0, 0, N)

print(minus)
print(zero)
print(plus)

분할 정복 / 재귀

해당 코드 7번 이상 보기!

'백준 문제풀이' 카테고리의 다른 글

2630 - 색종이 만들기 (silver2)  (0) 2022.08.11
1927 - 최소 힙 (silver 2)  (0) 2022.08.10
1541 - 잃어버린 괄호 (silver 2)  (0) 2022.08.07
1260 - DFS와 BFS (silver 2)  (0) 2022.08.05
1012 - 유기농 배추 (silver 2)  (0) 2022.08.05