#문제
https://www.acmicpc.net/problem/1780
#작성 코드
1
2
3
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
43
44
45
46
47
48
49
50
51
52
53
|
#include <iostream>
using namespace std;
int n;
int paper[2188][2188];
int d[9][2] = {{0,0}, {0,1}, {0,2},
{1,0}, {1,1}, {1,2},
{2,0}, {2,1}, {2,2}};
int papernum[3]; // -1, 0, 1으로 채워진 종이의 개수 저장.
// 해당 수 +1 인덱스에 값을 저장.
void cut(int x, int y, int size){
int first = paper[x][y];
bool same = true;
if( size==1 ){
papernum[first+1]++;
return;
}
for(int i=x; i<x+size; i++){
for(int j=y; j<y+size; j++){
if( paper[i][j]!=first){
same = false;
}
}
}
if( same ){
papernum[first+1]++;
return;
}
else{
for(int i=0; i<9; i++){
cut(x+d[i][0]*size/3, y+d[i][1]*size/3, size/3);
}
}
}
int main(){
cin>>n;
for(int i=1; i<=n; i++){
for(int j=1; j<=n; j++){
cin>>paper[i][j];
}
}
cut(1, 1, n);
for(int i=0; i<3; i++){
cout<<papernum[i]<<'\n';
}
return 0;
}
|
cs |
##
2630 색종이 만들기 문제와 동일하다!
'BOJ' 카테고리의 다른 글
BOJ 1956번 :: 운동 (0) | 2019.12.25 |
---|---|
BOJ 1629번 :: 곱셈 (0) | 2019.12.24 |
BOJ 1992번 :: 쿼드트리 (0) | 2019.12.24 |
BOJ 9375번 :: 패션왕 신해빈 (0) | 2019.12.23 |
BOJ 2630번 :: 색종이 만들기 (0) | 2019.12.22 |