๋ฌธ์
N x N ๋ฐฐ์ด ์์ ์ซ์๋ ํด๋น ์์ญ์ ์กด์ฌํ๋ ํ๋ฆฌ์ ๊ฐ์๋ฅผ ์๋ฏธํ๋ค.
์๋๋ N=5 ์ ์์ด๋ค.
M x M ํฌ๊ธฐ์ ํ๋ฆฌ์ฑ๋ฅผ ํ ๋ฒ ๋ด๋ฆฌ์ณ ์ต๋ํ ๋ง์ ํ๋ฆฌ๋ฅผ ์ฃฝ์ด๊ณ ์ ํ๋ค.
์ฃฝ์ ํ๋ฆฌ์ ๊ฐ์๋ฅผ ๊ตฌํ๋ผ!
์๋ฅผ ๋ค์ด M=2 ์ผ ๊ฒฝ์ฐ ์ ์์ ์ ์ ๋ต์ 49๋ง๋ฆฌ๊ฐ ๋๋ค.
์ ๋ ฅ
๊ฐ์ฅ ์ฒซ ์ค์๋ ํ
์คํธ ์ผ์ด์ค์ ๊ฐ์ T๊ฐ ์ฃผ์ด์ง๊ณ , ๊ทธ ์๋๋ก ๊ฐ ํ
์คํธ ์ผ์ด์ค๊ฐ ์ฃผ์ด์ง๋ค.
๊ฐ ํ
์คํธ ์ผ์ด์ค์ ์ฒซ ๋ฒ์งธ ์ค์ N ๊ณผ M ์ด ์ฃผ์ด์ง๊ณ ,
๋ค์ N ์ค์ ๊ฑธ์ณ N x N ๋ฐฐ์ด์ด ์ฃผ์ด์ง๋ค.
๋ฌธ์
์ถ๋ ฅ์ ๊ฐ ์ค์ '#t'๋ก ์์ํ๊ณ , ๊ณต๋ฐฑ์ ํ ์นธ ๋ ๋ค์ ์ ๋ต์ ์ถ๋ ฅํ๋ค.
(t๋ ํ
์คํธ ์ผ์ด์ค์ ๋ฒํธ๋ฅผ ์๋ฏธํ๋ฉฐ 1๋ถํฐ ์์ํ๋ค.)
์ ์ฝ ์ฌํญ
1. N ์ 5 ์ด์ 15 ์ดํ์ด๋ค.
2. M์ 2 ์ด์ N ์ดํ์ด๋ค.
3. ๊ฐ ์์ญ์ ํ๋ฆฌ ๊ฐฏ์๋ 30 ์ดํ ์ด๋ค.
์์ ์ ๋ ฅ 1
10
5 2
1 3 3 6 7
8 13 9 12 8
4 16 11 12 6
2 4 1 23 2
9 13 4 7 3
6 3
29 21 26 9 5 8
21 19 8 0 21 19
9 24 2 11 4 24
19 29 1 0 21 19
10 29 6 18 4 3
29 11 15 3 3 29
...
์์ ์ถ๋ ฅ 1
#1 49
#2 159
...
ํด๊ฒฐ ๋ฐฉ๋ฒ
์... ์ ์ด๋ ๊ฒ ํ์๋์ง ๊ธฐ์ต์ด ์ ์๋์ง๋ง... ๋์ ํฉ์ ํตํด์ ๋ต์ ๊ตฌํ๋ค
์๋ถ๋ถ์์ ์ซ์๋ฅผ ์ ๋ ฅ๋ฐ์ ๋, ๋์ ํฉ์ ๋ฐ๋ก ๊ตฌํด์ ๋ฆฌ์คํธ์ ๋ฃ์ด์ฃผ์๋ค.
t = int(input())
def inRange(x,y,n,m):
return 0 <= x+m-1 < n and 0 <= y+m-1 < n
for test_case in range(1, t+1):
n,m = map(int,input().split())
prefix_list = []
for i in range(n):
numbers = list(map(int,input().split()))
row = [0]
temp = 0
for number in numbers:
temp += number
row.append(temp)
prefix_list.append(row)
answer = -1
for x in range(n):
for y in range(n):
if inRange(x,y,n,m):
current = 0
for k in range(y,y+m):
current += (prefix_list[k][x+m] - prefix_list[k][x])
if current > answer:
answer = current
print("#{} {}".format(test_case, answer))
๋์ ํฉ์ ์ฌ์ฉํ์ง ์๊ณ ์๋์ ๊ฐ์ด M x M ์์ญ์ ๋ฐ๋ก ๊ณ์ฐํด์ ๊ตฌํ ์๋ ์๋ค.
T = int(input())
def inRange(x, y, n, m):
return x+m-1 < n and y+m-1 < n # M x M ์์ญ์ด ๋ฐฐ์ด ์์ ์์ ํ ๋ค์ด๊ฐ๋์ง ํ์ธ
for test_case in range(1, T+1):
N, M = map(int, input().split())
# N x N ๋ฐฐ์ด ์
๋ ฅ ๋ฐ๊ธฐ
arr = [list(map(int, input().split())) for _ in range(N)]
max_sum = 0
# ๊ฐ๋ฅํ ๋ชจ๋ ์์์ ์ ๋ํด
for i in range(N):
for j in range(N):
if inRange(i, j, N, M):
current = 0
# M x M ์์ญ์ ํฉ ๊ณ์ฐ
for x in range(i, i+M):
for y in range(j, j+M):
current += arr[x][y]
max_sum = max(max_sum, current)
print(f"#{test_case} {max_sum}")
'๐์ฝ๋ฉํ ์คํธ > SWEA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SWEA] <D2> 2005 - ํ์ค์นผ์ ์ผ๊ฐํ (0) | 2024.11.17 |
---|---|
[SWEA] <D2> 1974 - ์ค๋์ฟ ๊ฒ์ฆ (0) | 2024.11.17 |
[SWEA] <D2> 1954 - ๋ฌํฝ์ด ์ซ์ (0) | 2024.11.17 |
[SWEA] <D2> 1204 - ์ต๋น์ ๊ตฌํ๊ธฐ (0) | 2024.11.17 |
[SWEA] <D2> 1208 - Flatten (0) | 2024.11.15 |