Programmersマトリクス境界を回転するには
2526 ワード
Programmersマトリクス境界を回転するには
Link: https://programmers.co.kr/learn/courses/30/lessons/77485
問題の説明
行x columnsサイズのマトリクス.行列の数字は1からrows x columnsの順に1行です.この行列で長方形の範囲を複数回選択し、枠線部分の数値を時計回りに回転させます.各回転は4つの整数(x 1、y 1、x 2、y 2)で表され、その意味は以下の通りである.
x 1行y 1列からx 2行y 2列に対応する領域の矩形から、枠の中の数字の1つを時計回りに回転させる.
次に、6 x 6サイズマトリクスの例を示します.
この行列に回転(2,2,5,4)を適用すると、領域の枠線が時計回りに回転し、下図のように2行2列から5行4列になります.このとき、中央に15と21がある領域を回転させないように注意しましょう.
行列の縦長(行数)行、横長(列数)列、および回転リストをクエリーする場合は、各回転を配列に適用し、回転位置によって変更された数値の最小値を配列に順番に戻して解く関数を完了します.
せいげんじょうけん
コード|Python
def rotate(map,q):
temp = map[q[0]-1][q[1]-1]
min_list = [map[q[0]-1][q[1]-1]]
#left side
for i in range(q[0]-1,q[2]-1):
map[i][q[1]-1] = map[i+1][q[1]-1]
min_list.append(map[i+1][q[1]-1])
#bottom side
for i in range(q[1]-1,q[3]-1):
map[q[2]-1][i] = map[q[2]-1][i+1]
min_list.append(map[q[2]-1][i+1])
#right side
for i in range(q[2]-1,q[0]-1,-1):
map[i][q[3]-1] = map[i-1][q[3]-1]
min_list.append(map[i-1][q[3]-1])
#top side
for i in range(q[3]-1,q[1]-1,-1):
map[q[0]-1][i] = map[q[0]-1][i-1]
min_list.append(map[q[0]-1][i-1])
map[q[0]-1][q[1]] = temp
return min(min_list)
def solution(rows, columns, queries):
answer = []
map = [[0 for _ in range(columns)] for _ in range(rows)]
count = 0
for i in range(rows):
for j in range(columns):
count +=1
map[i][j] = count
for i in range(len(queries)):
answer.append((rotate(map,queries[i])))
return answer
コード結果
Reference
この問題について(Programmersマトリクス境界を回転するには), 我々は、より多くの情報をここで見つけました https://velog.io/@kakasi18/Programmers행렬-테두리-회전하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol