어디까지 이 for문을 돌릴것인가에 대한 질문은 '제한'을 잘 읽어봐야 한다. 가장 눈여겨봐야 할 점은 min(N, M) mod 2 = 0이라는 점이다. 이는 가로 세로 한 부분은 짝수로 된다는 점을 기인하면 된다.
시작점은 0,0에서부터 아래로(좌에서부터) 시작한다는 점이다. 데이터를 swap할 때 temp를 이용하는 것처럼 배열을 옮기면서 temp에 넣고 빼고를 반복하면 된다.
n, m, r = map(int, input().split())
graph = []
for _ in range(n):
graph.append(list(map(int, input().split())))
for _ in range(r):
for i in range(min(n, m) // 2):
x, y = i, i
value = graph[x][y]
for j in range(i+1, n-i): #좌
x = j
temp = graph[x][y]
graph[x][y] = value
value = temp
for j in range(i+1, m - i):#우
y = j
prev = graph[x][y]
graph[x][y] = value
value = temp
for j in range(i+1, n - i):#상
x = n - j - 1
temp = graph[x][y]
graph[x][y] = value
value = temp
for j in range(i+1, m - i):#하
y = m - j - 1
temp = graph[x][y]
graph[x][y] = value
value = temp
for i in range(n):
for j in range(m):
print(graph[i][j], end = ' ')
print()