Programmers 행렬 테두리 회전하기 Level 2 문제 Link
입출력 예시
def solution(rows, columns, queries):
result = []
temp = [x for x in range(rows * colums + 1)]
# 1~시작하는 정, 직사각형 모양이며, index로 접근 시 첫 번째 자리가 0이 오게된다.
# 혼돈이 없도록 1차원 배열 선언 시 0포함하여 주고, 마지막자리 포함을 위해 +1
for quer in queries:
index_list = []
val_list = []
left_top = (quer[0] -1) * columns + quer[1]
right_top = (quer[0] -1) * columns + quer[3]
left_bot= (quer[2] -1) * columns + quer[1]
right_bot = (quer[2] -1) * columns + quer[3]
# 왼쪽 위와 오른쪽 아래 방향은 주어진 것을 토대로 나머지 right_top, left_bot을 구함
# ((행 - 1) * columns + 열)
index_list = [x for x in range(left_top, right_top)] +
[x for x in range(right_top, right_bot, columns)] +
[x for x in range(right_bot, left_bot, -1)] +
[x for x in range(left_bot, left_top, -columns)]
# index 위치를 돌릴 순서대로 넣어준다.
# 왼쪽위 -> 오른쪽 위
# 오른쪽 위 -> 오른쪽 아래 시계방향으로 반복
val_list = [temp[i] for i in index_list]
# temp -> 원래 판 val_list -> 원래 판에 있는 값을 넣어준다
result.append(min(val_list))
# 결과 list에 최솟값 추가
val_list.insert(0, val_list.pop())
# 시계방향으로 돌려주기
cnt = 0
for i in index_list:
temp[i] = val_list[cnt]
cnt += 1
return result