๋ฌธ์
์ฝ๋
#include <iostream>
using namespace std;
int map[501][501];
int N, M;
/*
์ด 19๊ฐ์ ๋ชจ์ ๊ฐ๋ฅ
*/
int dr1[2][3] = {{1, 2, 3}, {0, 0, 0}};
int dc1[2][3] = {{0, 0 ,0}, {1, 2, 3}};
int dr2[3] = {0, 1, 1};
int dc2[3] = {1, 0, 1};
int dr3[8][3] = {{1, 2, 2}, {0, 0, 1}, {0, 1, 2}, {1, 1, 1}, {0, -1, -2}, {0, 0, 1}, {0, 1, 2}, {0, 0, -1}};
int dc3[8][3] = {{0, 0, 1}, {1, 2, 0}, {1, 1, 1}, {0, 1, 2}, {1, 1, 1}, {1, 2, 2 }, {1,0, 0}, {1, 2, 2}};
int dr4[4][3] = {{1, 1, 2}, {0, -1, -1}, {0, -1, 1}, {0, 1, 1}};
int dc4[4][3] = {{0, 1, 1}, {1, 1, 2}, {1, 1, 0}, {1, 1, 2}};
int dr5[4][3] = {{0, 1, 0}, {0, -1, 1}, {0, -1,0}, {-1, 1, 0}};
int dc5[4][3] = {{1, 1, 2}, {1, 1, 1}, {1, 1, 2}, {0, 0, 1}};
int max_v = -1;
void go(){
for(int i=0; i<N; i++){
for(int k=0; k<M; k++){
int r = i;
int c = k;
int cnt = 1;
int temp = map[r][c];
for(int a=0; a<2; a++){ // ์ฒซ๋ฒ์งธ ํ
ํธ๋ก๋ฏธ๋
ธ
for(int b=0; b<3; b++){
int nr = r + dr1[a][b];
int nc = c + dc1[a][b];
if(nr>=0 && nr<N && nc>=0 && nc<M){
temp += map[nr][nc];
cnt++;
}
}
if(cnt == 4) max_v = max(max_v, temp);
cnt = 1;
temp = map[r][c];
}
for(int a=0; a<3; a++){ // ๋๋ฒ์งธ ํ
ํธ๋ก๋ฏธ๋
ธ
int nr = r + dr2[a];
int nc = c + dc2[a];
if(nr>=0 && nr<N && nc>=0 && nc<M){
temp += map[nr][nc];
cnt++;
}
if(cnt == 4) max_v = max(max_v, temp);
}
cnt = 1;
temp = map[r][c];
for(int a=0; a<8; a++){ // ์ธ๋ฒ์งธ ํ
ํธ๋ก๋ฏธ๋
ธ
for(int b=0; b<3; b++){
int nr = r + dr3[a][b];
int nc = c + dc3[a][b];
if(nr>=0 && nr<N && nc>=0 && nc<M){
temp += map[nr][nc];
cnt++;
}
}
if(cnt == 4) max_v = max(max_v, temp);
cnt = 1;
temp = map[r][c];
}
for(int a=0; a<4; a++){ // ๋ค๋ฒ์งธ ํ
ํธ๋ก๋ฏธ๋
ธ
for(int b=0; b<3; b++){
int nr = r + dr4[a][b];
int nc = c + dc4[a][b];
if(nr>=0 && nr<N && nc>=0 && nc<M){
temp += map[nr][nc];
cnt++;
}
}
if(cnt == 4) max_v = max(max_v, temp);
cnt = 1;
temp = map[r][c];
}
for(int a=0; a<4; a++){ // ๋ค์ฏ๋ฒ์งธ ํ
ํธ๋ก๋ฏธ๋
ธ
for(int b=0; b<3; b++){
int nr = r + dr5[a][b];
int nc = c + dc5[a][b];
if(nr>=0 && nr<N && nc>=0 && nc<M){
temp += map[nr][nc];
cnt++;
}
}
if(cnt == 4) max_v = max(max_v, temp);
cnt = 1;
temp = map[r][c];
}
}
}
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cin>>N>>M;
for(int i=0; i<N; i++){
for(int k=0; k<M; k++){
cin>>map[i][k];
}
}
go();
cout<<max_v;
}
ํ์ด
ํ์ ์ด๋ ๋์นญ๊น์ง ๊ณ ๋ คํด์ ๋์ฌ ์ ์๋ ๋ชจ๋ ํ ํธ๋ฆฌ๋ฏธ๋ ธ์ ๋ชจ์์ ์ ์ด๋ฏธ์ง์ ์ด 19๊ฐ์ ๊ฒฝ์ฐ์ ๋๋ค.
ํด๋น ์ด๋ฏธ์ง์ ๊ทธ๋ฆผ์ ํ๋์์ผ๋ก ์ ์ด ์ฐํ ๋ถ๋ถ์ ๊ธฐ์ค์ ์ผ๋ก ์ก๊ณ , ๋๋จธ์ง ์ธ ์ ์ฌ๊ฐํ์ด N * M ๋ฒ์ ์์ ์๋ค๋ฉด ์ ์๋ฅผ ๋ํด์ ์ต๋๊ฐ์ ๊ฐฑ์ ํ๋ ๋จ์ ๊นก ๊ตฌํ์ผ๋ก ๋ฌธ์ ๋ฅผ ํ์์ต๋๋ค.
'Algorithm ๐ง๐ปโ๐ป > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค,c++] 16935๋ฒ - ๋ฐฐ์ด ๋๋ฆฌ๊ธฐ 3 (0) | 2022.09.22 |
---|---|
[๋ฐฑ์ค,c++] 10703๋ฒ - ์ ์ฑ (0) | 2022.09.21 |
[๋ฐฑ์ค,c++] 22860๋ฒ - ํด๋ ์ ๋ฆฌ (small) (0) | 2022.09.21 |
[๋ฐฑ์ค,c++] 21278๋ฒ - ํธ์์ด ๋ ๋ง๋ฆฌ ์นํจ (0) | 2022.09.18 |
[๋ฐฑ์ค,c++] 15661๋ฒ - ๋งํฌ์ ์คํํธ (0) | 2022.09.18 |
[๋ฐฑ์ค,c++] 6987๋ฒ - ์๋์ปต (0) | 2022.09.18 |
๋๊ธ