Question and Answer from L4-M1
def rotate_matrix(matrix, m, n, r):
layers = min(m, n) // 2
for layer in range(layers):
elements = []
top = layer
bottom = m - 1 - layer
left = layer
right = n - 1 - layer
for j in range(left, right + 1):
elements.append(matrix[top][j])
for i in range(top + 1, bottom + 1):
elements.append(matrix[i][right])
if bottom > top:
for j in range(right - 1, left - 1, -1):
elements.append(matrix[bottom][j])
if right > left:
for i in range(bottom - 1, top, -1):
elements.append(matrix[i][left])
layer_size = len(elements)
if layer_size == 0:
continue
rotations = r % layer_size
elements = elements[rotations:] + elements[:rotations]
idx = 0
for j in range(left, right + 1):
matrix[top][j] = elements[idx]
idx += 1
for i in range(top + 1, bottom + 1):
matrix[i][right] = elements[idx]
idx += 1
if bottom > top:
for j in range(right - 1, left - 1, -1):
matrix[bottom][j] = elements[idx]
idx += 1
if right > left:
for i in range(bottom - 1, top, -1):
matrix[i][left] = elements[idx]
idx += 1
return matrix
m, n, r = map(int, input().split())
matrix = []
for _ in range(m):
row = list(map(int, input().split()))
matrix.append(row)
rotated_matrix = rotate_matrix(matrix, m, n, r)
for row in rotated_matrix:
print(' '.join(map(str, row)))