๋ฌธ์
ํด๋น ํฌ์คํ ์ ๋ฐฑ์ค์ 14500๋ฒ ํ ํธ๋ก๋ฏธ๋ ธ ์ ์ ๊ทผ๊ณผ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ค๋ช ํ ๊ธ ์ ๋๋ค.
์ ๋ต ์์ค ์ฝ๋๋ฅผ ํ์ธํ์๋ ค๋ฉด solve url ์์ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ด๋ค ๋ฐฉ์์ผ๋ก ์ ๊ทผํด์ผ ํ๋์ง๋ฅผ ๋จผ์ ์๊ฐํด๋ณด์.
๋ฌธ์ ์ ๊ทผ
์ด๋ฒ ๋ฌธ์ ๋ ์์ ํ์์ผ๋ก ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ์ด๋ค.
์ด๋ป๊ฒ ๋๋ ์์ ํ์์ผ๋ก ํ ์ ์๋ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํ์๊น??
์ฐ์ ์ฃผ์ด์ง ๋ฌธ์ ์์ ์ํ๋ ๋ต์ ์ฐพ๊ธฐ ์ํด์๋ ํ ํธ๋ก๋ฏธ๋ ธ ํ๋๋ฅผ ๋์์ ์ต๋์ ํฉ์ ๊ตฌํด์ผ ํ๋ค.
๊ทธ๋ผ ๋น์ฅ ์๊ฐ๋๋ ๊ฒ์ n by m
ํฌ๊ธฐ์ ๋ฐฐ์ด์ ํ๋์ฉ ๊ฒ์ฌํ๋ฉด์ ์ต๋ ํฉ์ ๊ตฌํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ ๋ค.
์ด์ ์ฌ๊ธฐ์ ์ด ๋ฌธ์ ๋ฅผ ์์ ํ์์ผ๋ก ํ ๊ฒ์ธ๊ฐ, ์ด๋ถ ํ์์ผ๋ก ํ ๊ฒ์ธ๊ฐ๋ฅผ ์ ํ ์ ์๋ค.
์ํ์ด๋ ์ด๋ถ ํ์(ํน์ ๋ค๋ฅธ ํ์ ๊ธฐ๋ฒ)์ ๊ตฌ๋ถ์ง๋ ๊ฒ์ ๋ฐ๋ก ์๊ฐ ๋ณต์ก์ฑ์ ํต๊ณผ์ด๋ค.
์๊ฐ ๋ณต์ก๋๋ฅผ ๋ณด๋ฉด ์ฐ๋ฆฌ๊ฐ ์ฐ์ฐํด์ผํ ์ต์ ์ ๊ฒฝ์ฐ์ ์๊ฐ ๋์จ๋ค.
n * m
ํ๋ ฌ์์ ๊ฐ ์์๋ง๋ค ์ด๋ค ํ
ํธ๋ก๋ฏธ๋
ธ๋ฅผ ๋์๋์ง ๊ฒ์ฌ๋ฅผ ํ๋ค๊ณ ์น๋ฉด ์ต์
์ ๊ฒฝ์ฐ 4 * 500์ธ 2000๋ฒ์ ๊ฒฝ์ฐ๊ฐ ๋๊ฒ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ๊ฐ์ 5๊ฐ์ง ์ข ๋ฅ์ ํ ํธ๋ก๋ฏธ๋ ธ๋ฅผ ๋ณด์.
์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด 12๊ฐ์ง์ ํ
ํธ๋ก๋ฏธ๋
ธ๊ฐ ๋์ฌ ์ ์๋ค.
๊ทธ๋ผ ์๊น ๊ตฌํ๋ ํ๋ ฌ์ ์ต์ ์ ๊ฒฝ์ฐ 2000๋ฒ๊ณผ 19๊ฐ์ง์ ํ ํธ๋ก๋ฏธ๋ ธ๊ฐ ๊ฐ๊ฐ๋ค์ด๊ฐ ๊ฒฝ์ฐ๋ฅผ ๊ณฑํ๋ค๋ฉด ๋๋ต 456000๋ฒ์ ์ฐ์ฐ์ ์ํํ์ผ ํ๋ค๋ ๊ฒฐ๊ณผ๊ฐ ๋์ถ๋๋ค.
์ฐ๋ฆฌ๋ ์ฑ์ ์๋ฒ๊ฐ ๋ณด์์ ์ผ๋ก ๋ดค์ ๋ 1์ด์ 1์ต๋ฒ ์ฐ์ฐ์ ํ๋ค๊ณ ๊ฐ์ ํ์ผ๋ 24000๋ฒ์ ๋งค์ฐ ์์, ํ ๋ฒ์ ํต๊ณผํ ์ ์๋ ์์ ์ฐ์ฐ์ธ ์ ์ด๋ค.
๊ทธ๋์ ์ด ๋ฌธ์ ๋ฅผ ๊ฒฐ๊ตญ ์์ ํ์์ผ๋ก ๋์ถํ ์ ์์ ๊ฒ ๊ฐ๋ค๋ ๊ฒฐ๋ก ์ด ๋์๋ค.
์ค๋ต ํ๋ณด
์ด๋ฒ ๋ฌธ์ ๋ block ์ขํ์ ๋ํด์ ์ค์ํ ์ ์๋ ๋ถ๋ถ์ด ๋งค์ฐ ๋ง์ ๋ฌธ์ ์๋ค.
์ด์ ์ ์ํด์ ์ ํ์ด๋ณด์.
์ ๋ต ์ฝ๋
import java.util.*;
public class Main {
static int[][][] block = {
{{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}},
};
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int[][] a = new int[n][m];
for (int i=0; i<n; i++) {
for (int j=0; j<m; j++) {
a[i][j] = sc.nextInt();
}
}
int ans = 0;
for (int i=0; i<n; i++) {
for (int j=0; j<m; j++) {
for (int k=0; k<19; k++) {
boolean ok = true;
int sum = a[i][j];
for (int l=0; l<3; l++) {
int x = i+block[k][l][0];
int y = j+block[k][l][1];
if (0 <= x && x < n && 0 <= y && y < m) {
sum += a[x][y];
} else {
ok = false;
break;
}
}
if (ok && ans < sum) {
ans = sum;
}
}
}
}
System.out.println(ans);
}
}
๋๊ธ