[๋ฐฑ์ค] 14500๋ฒ ํ ํธ๋ก๋ฏธ๋ ธ
ํ์ด
์ด๋ฐ ๋ธ๋ก ํํ์ ๋ฌธ์ ๊ฐ ๋์ค๋ฉด ์ค์ ๋ก ๋ํ์ ๊ทธ๋ ค๋ณด๋ฉด์ ๋ฌธ์ ๋ฅผ ํธ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ธ ๊ฒ ๊ฐ๋ค. ๋จผ์ N*M ํฌ๊ธฐ์ ์ข ์ด ์์ ๋ธ๋ก ํ๋๋ง ๋๋๋ค๊ณ ํ์ผ๋ ๊ฐ ๋ธ๋ก์ด ๋์ผ ์ ์๋ ๋ชจ์ ์ ๋ถ๋ฅผ ๊ทธ๋ ค๋ณด์๋ค. ํ์ ๊ณผ ๋ค์ง๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ๋ง๋ค ์ ์๋ ๋ํ์ ๋ชจ์์ 19๊ฐ์ง๊ฐ ๋์จ๋ค. ์ ๋ ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด 3์ฐจ์ ๋ฐฐ์ดํ์์ผ๋ก ์ข์ธก ์๋จ์ (0,0)์ผ๋ก ์๊ฐํ๊ณ ๊ฐ ๋ธ๋ก์ ๋ชจํ์ ๋ฃ์ด์ ํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
๋ธ๋ก์ด ๋์ธ ์นธ์ ํฉ์ ๊ตฌํ๊ธฐ ์ํด์๋ ๋ชจ๋ ๋ธ๋ก์ด ์ข ์ด ์๋ก ์ฌ๋ผ๊ฐ์ผ ํ๋ค. ๊ทธ๋ฐ๋ฐ, ๋ฐฐ์น๋ฅผ ํ ์ ์๋ ๋ถ๋ถ๋ค๋ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ค์ผ ํ๋ค. ์ธ๋ก N ๊ฐ๋ก M์ด๋ผ๊ณ ํ์ ๋ ์๋์ ๊ฐ์ด 3*4 ๋ชจํ์ ์ข ์ด์์ ์๋ฅผ ๋ค์ด๋ณด์.
์์ ๊ฐ์ด 18๋ฒ๋ชจ์์ ๋ธ๋ก์ ์ข ์ด์์ ์ฌ๋ ค๋์ ์ ์๋ค. ์ข ์ด๋ฅผ ๊ทธ๋ฆฌ๋๋ก ๋ดค์ ๋ ์ขํ (N, M)์ด (0,0)์ ์์นํด์๋ค. ํ์ง๋ง ์ด ๋ธ๋ก์ ์ ์ฒด 12๊ฐ์ ์นธ ์ค์ ๋์ ์ ์๋ ์์น์ ๊ฒฝ์ฐ๋ ๋ช ๊ฐ์ง๊ฐ ์๋๋ค.
ํด๋น ๋ชจ์์ผ๋ก๋ 12๊ฐ์ง์ ์ขํ ์์น ์ค (0,0), (1,0), (2,0)์ ์์น ๋ฑ 3๊ฐ์ง ๊ฒฝ์ฐ์๋ง ๋ธ๋ก์ ์ข ์ด ์๋ก ์ฌ๋ฆด ์ ์๋ค. ์ ๊ทธ๋ฆผ์ฒ๋ผ ๋ชจ์์ ๋ฐ๋ผ ์ข ์ด์ ์ฌ๋ฆด ์ ์๋ ๊ฒฝ์ฐ๋ฅผ ์์ผ๋ก ํํํด๋ณด์. (ํ์ธํ ๋ชจ์์ ์ธ๋ก๋ฅผ ์๋ฌธ์n, ๊ฐ๋ก๋ฅผ ์๋ฌธ์ m)
์ข ์ด ์ ๋ธ๋ก์ ์ฌ๋ ค๋์ ์ ์๋ ๊ฒฝ์ฐ์ ์ = (N+1-n)(M+1-m)
๋ธ๋ฃจํธ ํฌ์ค ์๊ณ ๋ฆฌ์ฆ์ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์๋ํด๋ณด๋ ๊ฒ์ด๋ค. ํ์ง๋ง, ๊ฒฝ์ฐ์ ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ์ฌ์ฉ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ ์ ์๋ค. ์ง๊ธ๊น์ง ์์๋ธ ๋ธ๋ก๊ณผ ์ข ์ด์ ์๋ฆฌ๋ฅผ ๋๊ณ ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด ์ต๋ ๋ช ๊ฐ์ง ๊ฒฝ์ฐ์ ์๋ฅผ ํ์ธํด์ผ ํ๋์ง ์์๋ณด์.
๋จผ์ ์ด๋ธ๋ก์ ๊ฐ์๋ 19๊ฐ์ด๋ค. ๋ค์ ์ข ์ด ์์ ๊ฐ ์ขํ์ ์์น ์ธ๋ก N, ๊ฐ๋ก M์ ํ ๋ฒ์ฉ ๊ฑฐ์ณ์ผ ํ๋ค. ์ดํ ํด๋น ์ขํ์์ ๋ธ๋ก ์์น(4)์ ๊ฐ ์ซ์๋ฅผ ํฉํด์ผ ํ๋ค. ํ์ธํด์ผ ํ ์ต๋ ๊ฒฝ์ฐ์ ์๋
์ด ๋ธ๋ก ๋ชจ์ ๊ฐ์ 19 * ์ต๋ N 500 * ์ต๋ M 500 * ๋ธ๋ก ์์น 4 = 19,000,000
๊ฐ๋จํ๊ฒ ๊ณ์ฐํ ๊ฐ์ 1900๋ง ์ ๋๊ฐ ๋์๋ค. ์ ์ ๊ธฐ์ค์ 1์ฒ๋ง ์ ๋์ ๊ฒฝ์ฐ์ ์ ์ดํ์ธ ๊ฒฝ์ฐ์๋ง ๋ธ๋ฃจํธ ํฌ์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค. ํ์ง๋ง, ๊ณ์ฐํ ๊ฒฝ์ฐ์ ์์์ ๋ชจ๋ ๋ธ๋ก์ ์์น๋ฅผ ํ์ธํ๋ ๊ฒ์ด ์๋๊ณ ๋ธ๋ก์ด ๋ฐ์ผ๋ก ๋๊ฐ๋ค๊ณ ํ๋จ๋์์ ๋ break ๋ฌธ์ด๋ continue๋ฌธ์ ์ฌ์ฉํ๋ฉด ์ต๋ ๋๋ต 1000๋ง ์ ๋์ ๊ฒฝ์ฐ์ ์๋ก ์ค์ผ ์ ์๋ค๊ณ ํ๋จํด์ ๋ชจ๋ ํ์ธํด๋ณด๊ธฐ๋ก ํ์ต๋๋ค. ๊ฒฐ๊ณผ๋ ์์ฌ์์ฌํ์ง๋ง, ๋ฌธ์ ์์ด ํต๊ณผํ์ต๋๋ค.
ํต๊ณผ ํ ์ฑ์ ํํฉ์์ ๋ค๋ฅธ ํ์ด๋ค์ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ์ต๋๋ค. ํ์คํ ์ฝ๋์ ๊ธธ์ด๋ ๋ค๋ฅธ ํ์ด๋ณด๋ค ์งง์์ผ๋ ์๋ ์ธก๋ฉด์์๋ ๊ฒจ์ฐ ํต๊ณผํ๋ฏ์ด ๋ง์ด ๋๋ ธ์ต๋๋ค. ์กฐ๊ธ ๋ ์ ๊ฒฝ ์จ์ ์ฝ๋ ๊ฐ์ ์ ํด๋ณด๋ฉด ๋ ์ข์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ ๊ฒ ๊ฐ๋ค์.
Java
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
54
55
|
import java.util.*;
public class Main {
static int[][][] BLOCKS = {
{{0,0}, {0,1}, {0,2}, {0,3}}
,{{0,0}, {1,0}, {2,0}, {3,0}}
,{{0,0}, {1,0}, {0,1}, {1,1}}
,{{0,0}, {0,1}, {0,2}, {1,2}}
,{{0,0}, {1,0}, {2,0}, {0,1}}
,{{0,0}, {1,0}, {1,1}, {1,2}}
,{{2,0}, {0,1}, {1,1}, {2,1}}
,{{1,0}, {1,1}, {1,2}, {0,2}}
,{{0,0}, {0,1}, {1,1}, {2,1}}
,{{0,0}, {1,0}, {0,1}, {0,2}}
,{{0,0}, {1,0}, {2,0}, {2,1}}
,{{0,0}, {1,0}, {2,0}, {1,1}}
,{{1,0}, {0,1}, {1,1}, {1,2}}
,{{0,1}, {1,0}, {1,1}, {2,1}}
,{{0,0}, {0,1}, {0,2}, {1,1}}
,{{0,0}, {0,1}, {1,1}, {1,2}}
,{{0,1}, {1,1}, {1,0}, {2,0}}
,{{1,0}, {1,1}, {0,1}, {0,2}}
,{{0,0}, {1,0}, {1,1}, {2,1}}
};
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(), m = sc.nextInt();
int[][] arr = new int[n][m];
int max = 0;
for(int i=0; i<n; i++){
for (int j=0; j<m; j++){
arr[i][j] = sc.nextInt();
}
}
for(int i=0; i<BLOCKS.length; i++){
int[][] block = BLOCKS[i];
for(int j=0; j<n; j++){
middleLoop : for(int k=0; k<m; k++){
int sum = 0;
for(int l=0; l<4; l++){
if(j+block[l][0]>=n || k+block[l][1]>=m){
continue middleLoop;
}else{
sum += arr[j+block[l][0]][k+block[l][1]];
}
}
if(sum > max) max = sum;
}
}
}
System.out.println(max);
}
}
|
๋๊ธ