[JavaScript] 행렬 테두리 회전하기
Programmers
2024년 4월 1일
Code
function solution(rows, columns, queries) {
let attr = 1;
const arr = Array.from({length: rows}, () => Array.from({length: columns}, () => attr++));
const mins = [];
queries.forEach(query => {
// 인덱스값으로
const [x1, y1, x2, y2] = query.map(el => el-1);
let min = arr[x1][y2], tmp = arr[x1][y2];
for(let i=y2; i>y1; i--){
arr[x1][i] = arr[x1][i-1];
min = Math.min(min, arr[x1][i]);
}
for(let i=x1; i<x2; i++){
arr[i][y1] = arr[i+1][y1];
min = Math.min(min, arr[i][y1]);
}
for(let i=y1; i<y2; i++){
arr[x2][i] = arr[x2][i+1];
min = Math.min(min, arr[x2][i]);
}
for(let i=x2; i>x1; i--){
arr[i][y2] = arr[i-1][y2];
min = Math.min(min, arr[i][y2]);
}
arr[x1+1][y2] = tmp;
// console.log(arr);
mins.push(min);
});
return mins;
}
해설
- 행렬의 요소를 한 칸씩 이동하려면 순서가 중요하다. 각 행 마다 비어있는 부분을 하나씩 채워줘야 하기 때문!
- 이동을 다 하게되면 같은 숫자가 두개 존재하게 되는데 해당 숫자를 임시 변수에 넣어서 마지막에 추가해준다.