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
| def solution(rows, columns, queries):
a = [[columns * i + j for j in range(1, columns + 1)] for i in range(rows)]
def rotate_matrix(a, query):
x1, y1, x2, y2 = [elem - 1 for elem in query]
save = a[x1][y1]
mn = 10 ** 9
# 왼쪽 세로줄 roate
for i in range(x1, x2):
a[i][y1] = a[i+1][y1]
mn = min(mn, a[i+1][y1])
# 하단 가로줄 rotate
for j in range(y1, y2):
a[x2][j] = a[x2][j+1]
mn = min(mn, a[x2][j+1])
# 오른쪽 세로줄 roate (역순으로)
for i in range(x2, x1, -1):
a[i][y2] = a[i-1][y2]
mn = min(mn, a[i-1][y2])
# 상단 가로줄 rotate
for j in range(y2, y1, -1):
a[x1][j] = a[x1][j-1]
mn = min(mn, a[x1][j-1])
a[x1][y1 + 1] = save
mn = min(mn, save)
return mn
print("원본 행렬: ")
print(*a, sep='\n')
ans = []
for query in queries:
mn = rotate_matrix(a, query)
ans.append(mn)
print("회전된 행렬: ")
print(*a, sep='\n')
return ans
|