[백준] 1780번: 종이의 개수

문제보기

재귀 문제였다 쉬웠다 그런데 나는 또 인덱스 실수를 했다

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

ans = [0, 0, 0] #-1, 0, 1 종이의 개수
def solve(i, j, n):
    if n == 1:
        ans[arr[i][j]+1] += 1
        return
    first = arr[i][j]
    isUsable = True # 모두 같은 숫자면 종이를 쓸 수 있다
    for r in range(n):
        for c in range(n):
            if first != arr[i+r][j+c]:
                isUsable = False
                break
        if not isUsable:
            break
    if isUsable:
        ans[arr[i][j]+1] += 1
        return
    else:
        for r in range(3):
            for c in range(3):
                solve(i+n//3*r, j+n//3*c, n//3)
solve(0, 0, n)
for e in ans:
    print(e)

인덱스를 주의하자

좋은 웹페이지 즐겨찾기