[プログラマレベル2]マトリクスの枠線を回転
15837 ワード
質問する
https://programmers.co.kr/learn/courses/30/lessons/77485
問題を解く
コード#コード#
function solution(rows, columns, queries) {
let answer=[];
let arr=Array.from(Array(rows), ()=>Array(columns).fill(0));
for(let i=1; i<=rows; i++){
for(let j=1; j<=columns; j++){
arr[i-1][j-1]=(i-1)*columns+j
}
}
for(let i=0; i<queries.length; i++){
rotation(queries[i][0], queries[i][1], queries[i][2], queries[i][3]);
}
function rotation(x1, y1, x2, y2){
let min=Number.MAX_SAFE_INTEGER;
let tmp=arr[x1-1][y2-1];
//위
for(let i=y2; i>y1; i--){
arr[x1-1][i-1]=arr[x1-1][i-2];
if(arr[x1-1][i-1]<min) min=arr[x1-1][i-1];
}
//왼
for(let i=x1; i<x2; i++){
arr[i-1][y1-1]=arr[i][y1-1];
if(arr[i-1][y1-1]<min) min=arr[i-1][y1-1];
}
//아래
for(let i=y1; i<y2; i++){
arr[x2-1][i-1]=arr[x2-1][i];
if(arr[x2-1][i-1]<min) min=arr[x2-1][i-1];
}
//오른쪽
for(let i=x2; i>x1; i--){
arr[i-1][y2-1]=arr[i-2][y2-1];
if(arr[i-1][y2-1]<min) min=arr[i-1][y2-1];
}
arr[x1][y2-1]=tmp;
if(arr[x1][y2-1]<min) min=arr[x1][y2-1];
answer.push(min);
}
return answer;
}
途中でやめようと思っていた問題が、結局自分で解決!こういうときは毎回達成感があります.🤣上、左、右、下の各回転を体現している.私の解題効率は低すぎると思いますが、ほとんどの人はこのように解題しています.
途中でバカなことをしましたが、vsコードの助けでやっと解けました.vsコードもしっかり使いましょう!
Reference
この問題について([プログラマレベル2]マトリクスの枠線を回転), 我々は、より多くの情報をここで見つけました https://velog.io/@rladpwl0512/프로그래머스-level2-행렬-테두리-회전하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol