- ์ด ๋ฌธ์ ๋ c++๋ก ํ์ด๋ฅผ ์์ฑํ์์ต๋๋ค.
๋ฌธ์
์์
ํ์ด
#include<iostream>
#include<algorithm>
using namespace std;
int n,m;
int map[500][500];
// ๊ฐ ํ
ํธ๋ก๋ฏธ๋
ธ๊ฐ ๋์ฌ์ ์๋ ๊ฒฝ์ฐ์ ์
int cnt[5]={2,1,8,4,4};
// ๋ฐฉํฅ ๋ฒกํฐ dir[5][2] ๋ ๋๊ฐ์ ์ ์ํด ํ์
int dir[6][2]={{0,0},{0,1},{1,0},{0,-1},{-1,0},{1,-1}};
// ํ
ํธ๋ก๋ฏธ๋
ธ๊ฐ ๋์ฌ์ ์๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ฐฉํฅ์ผ๋ก ํ์
int vec[5][8][4]={
{{0,1,1,1},{0,2,2,2}},
{{0,1,2,3}},
{{0,2,2,1},{0,3,3,2},{0,1,2,2},{0,2,3,3},{0,2,2,3},{0,2,1,1},{0,3,2,2},{0,1,1,2}},
{{0,2,1,2},{0,1,4,1},{0,2,3,2},{0,1,2,1}},
{{0,1,1,5},{0,5,1,2},{0,5,1,1},{0,2,1,5}}
};
bool inside(int y,int x){
return 0<=y && y<n && 0<=x && x<m;
}
int main(){
int answer=0;
cin>>n>>m;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>map[i][j];
}
}
// ๋ชจ๋ ํ
ํธ๋ก๋ฏธ๋
ธ์์ ๊ฒ์ฌ
for(int a=0;a<5;a++){
// ๋ชจ๋ ์ขํ๊ฒ์ฌ
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
// i,j ์ขํ์์๋ถํฐ ์์, ํด๋นํ๋ ํ
ํธ๋ก๋ฏธ๋
ธ์ ๊ฒฝ์ฐ์ ์๋งํผ ๋ฐ๋ณต
for(int b=0;b<cnt[a];b++){
// ์ฒ์ ์ขํ ํ์
int y=i,x=j;
int sum=0;
bool flag=true;
// ํ
ํธ๋ก๋ฏธ๋
ธ๋ 4๊ฐ์ ์ ์ฌ๊ฐํ
for(int k=0;k<4;k++){
int d=vec[a][b][k];
int dy=y+dir[d][0];
int dx=x+dir[d][1];
// ์ฌ๊ฐํ ์์ ์์๊ฒฝ์ฐ
if(inside(dy,dx)){
y=dy;
x=dx;
sum+=map[dy][dx];
}
// ์์ผ๋ฉด ์ข
๋ฃ
else{
flag=false;
break;
}
}
if(flag){
answer=max(answer,sum);
}
}
}
}
}
cout<<answer;
}
- ์ถ๊ฐ๋ก ๊ถ๊ธํ ์ ์ด๋ ์์ ํ ๋ถ๋ถ ์์ผ๋ฉด ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์ธ์.