행렬의 세로 길이(행 개수) rows, 가로 길이(열 개수) column, 그리고 회전들의 목록 queries가 주어질 때, 각 회전들을 배열에 적용한 뒤, 그 회전에 의해 위치가 바뀐 숫자들 중 가장 작은 숫자들을 순서대로 배열에 담아 return 하도록 solution 함수를 완성해주세요.
def solution(rows, columns, queries):
answer = []
board = [[0]*columns for _ in range(rows)]
num = 1
for row in range(rows):
for column in range(columns):
board[row][column] = num
num += 1
for x1,y1,x2,y2 in queries:
tmp = board[x1-1][y1-1]
result = [tmp]
moveVertical(x1-1,y1-1,x2-1,1,board,result)
moveHorizon(x2-1,y1-1,y2-1,1,board,result)
moveVertical(x2-1,y2-1,x1-1,-1,board,result)
moveHorizon(x1-1,y2-1,y1-1,-1,board,result)
board[x1-1][y1] = tmp
answer.append(min(result))
return answer
def moveVertical(sx,sy,ex,direction,board,result):
answer = board[sx][sy]
for i in range(abs(sx-ex)):
tmp = board[sx+(i*direction)+direction][sy]
board[sx+(i*direction)][sy] = tmp
answer = min(answer,tmp)
result.append(answer)
def moveHorizon(sx,sy,ey,direction,board,result):
answer = board[sx][sy]
for i in range(abs(sy-ey)):
tmp = board[sx][sy+(i*direction)+direction]
board[sx][sy+(i*direction)] = tmp
answer = min(answer,tmp)
result.append(answer)