4. 3번 과정에서 최솟값을 찾습니다.
회전한 배열 값에서 최솟값을 찾는 방법은 매우 간단합니다. 회전하기 위해 찾는 모든 값 중에서 가장 작은 값을 찾으면 됩니다. 여기에서는 배열을 회전할 때 최솟값도 같이 확인하도록 구현했습니다. 앞의 코드에서 min_value가 이에 해당합니다.
이렇게 문제의 정답 코드가 완성되었습니다. 전체 코드는 다음과 같습니다.
전체 코드
3장/행렬_테두리_회전하기.py
def rotate(x1, y1, x2, y2, matrix):
first = matrix[x1][y1]
min_value = first
#왼쪽
for k in range(x1, x2):
matrix[k][y1] = matrix[k + 1][y1]
min_value = min(min_value, matrix[k + 1][y1])
#아래
for k in range(y1, y2):
matrix[x2][k] = matrix[x2][k + 1]
min_value = min(min_value, matrix[x2][k + 1])
#오른쪽
for k in range(x2, x1, -1):
matrix[k][y2] = matrix[k - 1][y2]
min_value = min(min_value, matrix[k - 1][y2])
#위
for k in range(y2, y1 + 1, -1):
matrix[x1][k] = matrix[x1][k - 1]
min_value = min(min_value, matrix[x1][k - 1])
matrix[x1][y1 + 1] = first
return min_value
def solution(rows, columns, queries):
matrix = [[(i) * columns + (j + 1) for j in range(columns)] for i in range(rows)]
result = []
for x1, y1, x2, y2 in queries:
result.append(rotate(x1 - 1, y1 - 1, x2 - 1, y2 - 1, matrix))
return result
지난 번 문제와 다르게 중간에 막혔던 부분은 없었나요? 3번 조건을 해결했다면 나머지는 정말 지시하는 대로 구현하면 됩니다.