백준 논문수 1780

https://www.acmicpc.net/problem/1780

종이가 있다

이 종이의 각 셀에는 -1, 0 또는 1이 있습니다.

1. 인접한 셀이 같은 번호로 구성되어 있으면 그대로 사용합니다.

2. 1번이 사실이 아니라면 종이를 9조각으로 자른다.

이 예에서는 9 X 9입니다.

해결 과정:

– 같은 숫자가 아니면 9로 자릅니다. ( N // 3 )

– 중요합니다.

– 같은 숫자가 아니면 다시 9등분으로 잘라주세요. ( (N // 3) // 3 )

– 재귀로 풀기

1
2
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
N = 정수(입력())
minus_cnt, zero_cnt, plus_cnt = 0, 0, 0
서류 = ()
~을 위한 _ ~에 범위(N):
= 목록(지도(정수입력().rsplit()))
논문.추가(행)
데프 확인(행, 열, n):
글로벌 minus_cnt, zero_cnt, plus_cnt
= 논문(행)(열)
~을 위한~에 범위(행, 행 + N):
~을 위한 제이 ~에 범위(열, 열 + N):
만약에 논문(i)(j) != 커:
next_n = N //
체크(행, 열, next_n) # 1
확인(행, 열 + 다음_n, 다음_n) # 2
확인(행, 열 + (2 * 다음_n), 다음_n) # 삼
체크(행 + next_n, 열, next_n) # 4
체크(행 + next_n, 열 + 다음_n, 다음_n) # 5
체크(행 + next_n, 열 + (2 * 다음_n), 다음_n) # 6
체크(행 + (2 * next_n), 열, next_n) # 7
체크(행 + (2 * next_n), 열 + 다음_n, 다음_n) # 8
체크(행 + (2 * next_n), 열 + (2 * 다음_n), 다음_n) # 9
반품
만약에== 1:
마이너스_cnt += 1
엘리프== 0:
zero_cnt += 1
엘리프== 1:
plus_cnt += 1
반품
확인하다(0, 0N)
인쇄(마이너스_cnt)
인쇄(zero_cnt)
인쇄(플러스_cnt)
CS