4. 3번 과정에서 최솟값을 찾습니다.
역시 3번 과정에서 동일하게 행렬을 회전하면서 최솟값을 찾아내는 간단한 문제입니다. _min이 최솟값을 찾는 부분에 해당합니다.
answer.append(_min)
그리고 마지막으로 나온 최솟값을 answer 배열에 추가하면 됩니다.
전체 코드
3장/행렬_테두리_회전하기_최적화.py
def solution(rows, columns, queries):
answer = []
board = [[columns * j + (i + 1) for i in range(columns)] for j in range(rows)]
for query in queries:
a, b, c, d = query[0] - 1, query[1] - 1, query[2] - 1, query[3] - 1
row1, row2 = board[a][b:d], board[c][b + 1:d + 1]
_min = min(row1 + row2)
for i in range(c, a, -1):
board[i][d] = board[i - 1][d]
if board[i][d] < _min: _min = board[i][d]
for i in range(a, c):
board[i][b] = board[i + 1][b]
if board[i][b] < _min: _min = board[i][b]
board[a][b + 1:d + 1], board[c][b:d] = row1, row2
answer.append(_min)
return answer