본문 바로가기
BEB/algorithm

[JavaScript] 배열 회전 (90도,180도,270도)

by ddanss 2022. 11. 24.
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

댓글