https://school.programmers.co.kr/learn/courses/30/lessons/77485
1부터 rows*columns까지 순서대로 숫자가 적힌 행렬이 있습니다.
행렬에서 직사각현 모양의 범위를 여러 번 선택해 시계방향으로 회전시키려 합니다.
각 회전은 (x1, y1, x2, y2)인 정수 4개로 표현하며 직사각형 테두리에 있는 숫자들을 한 칸씩 회전합니다.
그 회전에 의해 위치가 바뀐 숫자들 중 가장 작은 숫자들을 순서대로 배열에 담아 return 하도록 solution 함수를 완성해주세요.
14,14,9로 저장되어 14를 최솟값인 8(tmp)로 변경해 14,8,9를 만들어 전체 작업을 완료합니다.def solution(rows, columns, queries):
answer = []
# 1. 배열 만들기
arr = [[0 for x in range(columns)] for y in range(rows)]
for i in range(rows):
for j in range(columns):
arr[i][j] = (i*columns) + j + 1
# 2. query돌면서 값 구하기
for x1,y1,x2,y2 in queries:
tmp = arr[x1-1][y1-1]
m = [tmp] # 최솟값
# x1, y1, x2, y2 = 2 2 5 4
# 아래 -> 위
for k in range(x1-1, x2-1):
v = arr[k+1][y1-1]
arr[k][y1-1] = v
m.append(v)
# 오 -> 왼
for k in range(y1-1, y2-1):
v = arr[x2-1][k+1]
arr[x2-1][k] = v
m.append(v)
# 위 -> 아래
for k in range(x2-1, x1-1, -1):
v = arr[k-1][y2-1]
arr[k][y2-1] = v
m.append(v)
# 왼 -> 오
for k in range(y2-1, y1-1, -1):
v = arr[x1-1][k-1]
arr[x1-1][k] = v
m.append(v)
arr[x1-1][y1] = tmp
answer.append(min(m))
return answer