14500-테트로미노
ㅁㅁㅁㅁ : row * (col-3)
ㅁ
ㅁ
ㅁ
ㅁ: (row-3) * col
ㅁㅁ
ㅁㅁ: (row-1)(col-1)
...int paper[500][500];
int block[19][3][2] = {
{{0,1}, {0,2}, {0,3}},
{{1,0}, {2,0}, {3,0}},
{{1,0}, {1,1}, {1,2}},
{{0,1}, {1,0}, {2,0}},
{{0,1}, {0,2}, {1,2}},
{{1,0}, {2,0}, {2,-1}},
{{0,1}, {0,2}, {-1,2}},
{{1,0}, {2,0}, {2,1}},
{{0,1}, {0,2}, {1,0}},
{{0,1}, {1,1}, {2,1}},
{{0,1}, {1,0}, {1,1}},
{{0,1}, {-1,1}, {-1,2}},
{{1,0}, {1,1}, {2,1}},
{{0,1}, {1,1}, {1,2}},
{{1,0}, {1,-1}, {2,-1}},
{{0,1}, {0,2}, {-1,1}},
{{0,1}, {0,2}, {1,1}},
{{1,0}, {2,0}, {1,1}},
{{1,0}, {2,0}, {1,-1}},
};
int main(int argc, const char * argv[]) {
int row, col;
cin>>row>>col;
int answer = 0;
for(int i = 0; i<row; i++) {
for(int j = 0; j<col; j++) {
cin>>paper[i][j];
}
}
for(int i = 0; i<19; i++) {
for(int r = 0; r<row; r++) {
for(int c=0; c<col; c++) {
int sum = paper[r][c];
bool isRange = true;
for(int k=0; k<3; k++) {
int rVal = r + block[i][k][0];
int cVal = c + block[i][k][1];
if(rVal < 0 || rVal >= row || cVal < 0 || cVal >= col) {
isRange = false;
break;
}
sum += paper[rVal][cVal];
}
if(isRange) {
answer = max(answer, sum);
}
}
}
}
cout<<answer<<endl;
return 0;
}Last updated
Was this helpful?