코딩테스트 준비/[백준]
[백준] 1780번 종이의 개수 파이썬
bled
2021. 7. 18. 19:49
https://www.acmicpc.net/problem/1780
1780번: 종이의 개수
N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1의 세 값 중 하나가 저장되어 있다. 우리는 이 행렬을 적절한 크기로 자르려고 하는데, 이때 다음의 규칙에 따라 자르려고 한다.
www.acmicpc.net
import sys
input = sys.stdin.readline
N = int(input())
paper = []
for _ in range(N):
paper.append(list(map(int, input().split())))
def counting_papers(r, c, n):
check = paper[r][c]
flag = False
for i in range(r, r+n):
for j in range(c, c+n):
if paper[i][j] != check:
flag = True
break
if flag:
break
result = [0, 0, 0]
if flag:
for k in range(3):
for l in range(3):
tmp = counting_papers(r+n//3*k, c+n//3*l, n//3)
result = [result[i] + tmp[i] for i in range(3)]
return result
if check == -1:
return [1,0,0]
elif check == 0:
return [0,1,0]
else:
return [0,0,1]
res = counting_papers(0,0,N)
for answer in res:
print(answer)