본문 바로가기
Beakjoon&프로그래머스/파이썬

[백준/파이썬] 1780번 종이의 개수

by 현장 2022. 1. 18.

-코드

def sol(x, y, N):
    number = arr[x][y]
    for i in range(x, x + N):
        for j in range(y, y + N):
            if number != arr[i][j]:
                for X in range(3):
                    for Y in range(3):
                        sol(x + X * (N // 3), y + Y * (N // 3), N // 3)
                return
    if number == -1:
        result[0] += 1
    elif number == 0:
        result[1] += 1
    else:
        result[2] += 1


n = int(input())
arr = [list(map(int, input().split())) for _ in range(n)]
result = [0, 0, 0]
sol(0, 0, n)
print(result[0])
print(result[1])
print(result[2])

전에 했던 분할 정복과 비슷하여 기본 틀을 만들어 해결을 하려 했지만 3개로 나누는 과정에서 문제가 생겨서 값이 이상하게 나와서 여러 시도를 해보았지만 실패를 했습니다. 그래서 게시판을 찾아보니 for문으로 해결을 하는 방법이 있어서 직접 짜 봤으나 틀려서 해당 부분을 참고하 혀 해결을 해서 아쉬웠습니다.