def solution(rows, columns, queries):
# 그리드 그리기
grid = [list(range(r*columns+1, r*columns+columns+1)) for r in range(rows)]
# 시작점부터 순서대로 돌기
def rotate_store(sx, sy, fx, fy):
stack = []
t = None
# 시작점에서 오른쪽으로 이동
for i in range(sy, fy+1):
if not stack:
stack.append(grid[sx][i])
else:
t = grid[sx][i]
grid[sx][i] = stack[-1]
stack.append(t)
for i in range(sx+1, fx+1):
t = grid[i][fy]
grid[i][fy] = stack[-1]
stack.append(t)
for i in range(fy-1, sy-1, -1):
t = grid[fx][i]
grid[fx][i] = stack[-1]
stack.append(t)
for i in range(fx-1, sx-1, -1):
t = grid[i][sy]
grid[i][sy] = stack[-1]
stack.append(t)
return min(stack)
result = []
for q in queries:
sx, sy = q[0]-1, q[1]-1
fx, fy = q[2]-1, q[3]-1
min_v = rotate_store(sx, sy, fx, fy)
result.append(min_v)
return result