728x90
const rotateMatrix = function (matrix, n=1) { //matrix는 입력배열 n은 몇번 회전할것인지, 90도를 기본으로 설정
if(matrix.length===0) return [];
let row = matrix.length;
let col = matrix[0].length;
n = n % 4; //360도 돌리나 720도 돌리나 결과는 같다.
let res; //결과로 나타낼 배열
if(n%2===0) { //180도와 360도 돌리는 것은 기본 matrix와 배열의 크기가 동일
res = Array.from(Array(row), () => Array(col).fill(0))
}
else { //90도와 270도는 행과 열의 크기가 바뀜
res = Array.from(Array(col), () => Array(row).fill(0))
}
for(let i=0;i<res.length;i++) {
for(let j=0;j<res[i].length;j++) {
if(n===1) res[i][j] = matrix[row-1-j][i]; //90도 회전
else if(n===2) res[i][j] = matrix[row-1-i][col-1-j]; //180도회전
else if(n===3) res[i][j] = matrix[j][col-1-i]; //270도 회전
}
}
if(n===0) res = matrix; //360도회전=제자리
return res;
};반응형
'BEB > algorithm' 카테고리의 다른 글
| [Javascript] 기수정렬 (0) | 2022.11.28 |
|---|---|
| 23_spiralTraversal (0) | 2022.11.25 |
| 머지소트 병합정렬 (1) | 2022.11.22 |
| LPS (0) | 2022.11.21 |
| javascript quicksort (0) | 2022.11.16 |
댓글