Skip to content

Commit 3c2a3b5

Browse files
committed
[BOJ] 종이의 개수 / 실버 2 / 55분
https://www.acmicpc.net/problem/1780
1 parent e2c11c8 commit 3c2a3b5

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
2+
import sys
3+
4+
def recursion(paper, row_start, col_start, step):
5+
# 종이가 같은지 검사
6+
result = check_paper_same(paper, row_start, col_start, step)
7+
8+
# 같지 않다면 9분할한뒤 각각을 재귀적으로 검사
9+
if result == 2:
10+
for i in range(3):
11+
for j in range(3):
12+
row = row_start + (i * step // 3)
13+
col = col_start + (j * step // 3)
14+
recursion(paper, row, col, step // 3)
15+
else:
16+
# 종이의 칸이 다 같은 경우
17+
answer[result] += 1
18+
19+
20+
21+
def check_paper_same(paper, row_start, col_start, step):
22+
base = paper[row_start][col_start]
23+
for i in range(row_start, row_start + step):
24+
for j in range(col_start, col_start + step):
25+
if paper[i][j] != base:
26+
return 2
27+
return base
28+
29+
30+
inp = sys.stdin.readline
31+
32+
n = int(inp())
33+
34+
paper = []
35+
36+
# 각각 -1, 0, 1로만 이루어진 종이의 개수 저장 튜플
37+
global answer
38+
answer = {-1: 0, 0: 0, 1: 0}
39+
40+
for i in range(n):
41+
paper.append(list(map(int, inp().split())))
42+
43+
recursion(paper, 0, 0, n)
44+
45+
print('\n'.join(str(value) for value in answer.values()))

0 commit comments

Comments
 (0)