테트리스를 뒤집을 수 없고
회전만 가능함에 주의❗️
shapes에 저장범위 벗어나면 pass최댓값 갱신import sys
input = sys.stdin.readline
shapes = [
# 1
[(0,0), (0,1), (0,2), (0,3)],
[(0,0), (1,0), (2,0), (3,0)],
# 2
[(0,0), (0,1), (1,1), (1,2)],
[(0,1), (1,0), (1,1), (2,0)],
# 3
[(0,1), (1,1), (2,0), (2,1)],
[(0,0), (0,1), (0,2), (1,2)],
[(0,0), (0,1), (1,0), (2,0)],
[(0,0), (1,0), (1,1), (1,2)],
# 4
[(0,0), (0,1), (0,2), (1,1)],
[(0,1), (1,0), (1,1), (2,1)],
[(0,1), (1,0), (1,1), (1,2)],
[(0,0), (1,0), (1,1), (2,0)]
# 5
[(0,0), (0,1), (1,0), (1,1)],
]
T = 1
while True:
answer = -int(1e9)
n = int(input())
if n == 0:
break
arr = [list(map(int, input().split())) for _ in range(n)]
for i in range(n):
for j in range(n):
for s in shapes:
total = 0
for dx, dy in s:
# 범위 벗어나면 해당 모양 pass
if not (0 <= i + dx < n and 0 <= j + dy < n):
break
total += arr[i + dx][j + dy]
else:
answer = max(answer, total)
print(f"{T}. {answer}")
T += 1
O(N^)