-
Notifications
You must be signed in to change notification settings - Fork 0
/
14500) 테트로미노.py
59 lines (51 loc) · 1.95 KB
/
14500) 테트로미노.py
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
56
57
58
59
"""
N이 작아서... 각 모양들의 시작 위치를 하나 정하고 0,0부터 N,M까지 각 모양들을 돌려가면서 다 해 보기
돌릴 때 중심점이 ^에서 정한 시작 위치임 (ex: 왼쪽 위의 점)
"""
import sys
# (dr, dc) 순서, 한 점을 고정시켜 두고 그걸 기준으로 회전하는 식으로
tetrominos =\
[
[(0, 0), (0, 1), (0, 2), (0, 3)], # ㅡ
[(0, 0), (1, 0), (2, 0), (3, 0)], # ㅣ
[(0, 0), (0, 1), (1, 0), (1, 1)], # ㅁ
[(0, 0), (1, 0), (2, 0), (2, 1)], # ㄴ
[(0, 0), (0, -1), (0, -2), (1, -2)], # ㄴ 회전
[(0, 0), (-1, 0), (-2, 0), (-2, -1)], # ㄴ 회전
[(0, 0), (0, 1), (0, 2), (-1, 2)], # ㄴ 회전
[(0, 0), (1, 0), (2, 0), (2, -1)], # ㄴ 뒤집은거
[(0, 0), (0, -1), (0, -2), (-1, -2)], # ㄴ 뒤집은거 회전
[(0, 0), (-1, 0), (-2, 0), (-2, 1)], # ㄴ 뒤집은거 회전
[(0, 0), (0, 1), (0, 2), (1, 2)], # ㄴ 뒤집은거 회전
[(0, 0), (1, 0), (1, 1), (2, 1)], # 번개
[(0, 0), (0, -1), (1, -1), (1, -2)], # 번개 회전
[(0, 0), (1, 0), (1, -1), (2, -1)], # 번개 뒤집은거
[(0, 0), (0, -1), (-1, -1), (-1, -2)], # 번개 뒤집은거 회전
[(0, 0), (0, 1), (0, 2), (1, 1)], # ㅜ
[(0, 0), (1, 0), (2, 0), (1, -1)], # ㅓ
[(0, 0), (0, -1), (0, -2), (-1, -1)], # ㅗ
[(0, 0), (-1, 0), (-2, 0), (-1, 1)] # ㅏ
]
def checkSum(r, c):
sums = []
for block in tetrominos:
sum_ = 0
for dr, dc in block:
row = r + dr
col = c + dc
if 0 <= row < N and 0 <= col < M: # 숫자판 범위
sum_ += board[row][col]
else:
break
sums.append(sum_)
return max(sums)
N, M = map(int, sys.stdin.readline().split())
board = []
for i in range(N):
line = list(map(int, sys.stdin.readline().split()))
board.append(line)
max_ = 0
for i in range(N):
for j in range(M):
max_ = max(max_, checkSum(i, j))
print(max_)