n, m, r = map(int, input().split())
a = [list(map(int, input().split())) for _ in range(n)]
def op1(a):
n = len(a)
m = len(a[0])
ans = [[0] * m for _ in range(n)]
for i in range(0, n):
for j in range(m):
ans[i][j] = a[n-1-i][j]
return ans
def op2(a):
n = len(a)
m = len(a[0])
ans = [[0] * m for _ in range(n)]
for i in range(n):
for j in range(0, m):
ans[i][j] = a[i][m-1-j]
return ans
def op3(a):
n = len(a)
m = len(a[0])
ans = [[0] * n for _ in range(m)]
for i in range(m):
for j in range(n):
ans[i][j] = a[n-1-j][i]
return ans
def op4(a):
n = len(a)
m = len(a[0])
ans = [[0] * n for _ in range(m)]
for i in range(m):
for j in range(n):
ans[i][j] = a[j][m-1-i]
return ans
def op5(a):
n = len(a)
m = len(a[0])
ans = [[0] * m for _ in range(n)]
for i in range(0, n // 2):
for j in range(0, m // 2):
ans[i][j] = a[i + n//2][j]
for i in range(0, n // 2):
for j in range(m // 2, m):
ans[i][j] = a[i][j - m//2]
for i in range(n // 2, n):
for j in range(m // 2, m):
ans[i][j] = a[i - n//2][j]
for i in range(n // 2, n):
for j in range(0, m // 2):
ans[i][j] = a[i][j + m//2]
return ans
def op6(a):
n = len(a)
m = len(a[0])
ans = [[0] * m for _ in range(n)]
for i in range(0, n // 2):
for j in range(0, m // 2):
ans[i][j] = a[i][j + m//2]
for i in range(0, n // 2):
for j in range(m // 2, m):
ans[i][j] = a[i - n//2][j]
for i in range(n // 2, n):
for j in range(0, m // 2):
ans[i][j] = a[i - n//2][j]
for i in range(n // 2, n):
for j in range(m // 2, m):
ans[i][j] = a[i][j - m//2]
return ans
ops = [op1, op2, op3, op4, op5, op6]
for k in map(int, input().split()):
a = ops[k-1](a)
for row in a:
print(*row, sep = ' ')
n = len(a)
m = len(a[0])```
배열 a의 행과 열이 바뀔 수 있기 때문에 이 부분이 행렬마다 필요함
ops = [op1, op2, op3, op4, op5, op6]
for k in map(int, input().split()):
a = ops[k-1](a)
for row in a:
print(*row, sep = ' ')
이차원 리스트 괄호 없이 출력
더 깔끔하게 정리~