문제
코드
function solution(rows, columns, queries) {
var answer = [];
let val = 0;
let arr = Array.from(new Array(rows), (e)=>{
return Array.from(new Array(columns), (e1)=>{
return ++val;
});
});
const test = (query) => {
let x1 = query[0];
let y1 = query[1];
let x2 = query[2];
let y2 = query[3];
let point = [];
let lastPointX = x1+1;
let lastPointY = y1;
for(let y = y1 ; y<=y2 ; y++){
point.push([x1,y]);
}
for(let x = x1+1 ; x<=x2 ; x++){
point.push([x,y2]);
}
for(let y = y2-1 ; y >= y1 ; y--){
point.push([x2,y]);
}
for(let x = x2-1 ; x >= x1+1 ; x--){
point.push([x,y1]);
}
let val = [];
point.forEach((p)=>{
val.push(arr[p[0]-1][p[1]-1]);
});
val.unshift(val.pop());
let min = Math.min(...val);
answer.push(min);
point.forEach((p,index)=>{
arr[p[0]-1][p[1]-1] = val[index];
});
}
queries.forEach((query)=>{
test(query);
});
return answer;
}
회고
- 행렬 테두리를 회전할 때 점들의 위치와 값을 따로 배열에 저장 후, 큐를 이용해 배열에 다시 회전한 결과를 저장