2차원 배열 돌리기

황성호·2021년 3월 21일
0

알고리즘

목록 보기
3/7

시계 방향으로 돌리기

console.log(board)
function rotateRigth(arr){
	let n=arr[0].length
	let m=arr.length
	let result=Array.from({length:n},()=>Array.from({length:m},()=>0))
	result.forEach((_,i)=>{
	        _.forEach((v,j)=>{
	            result[i][j]=arr[m-j-1][i]
	        })
	})
    return result
}
console.log(rotateRigth(board))    

board

[
  [ 'C', 'C', 'B', 'D', 'E' ],
  [ 'A', 'A', 'A', 'D', 'E' ],
  [ 'A', 'A', 'A', 'B', 'F' ],
  [ 'C', 'C', 'B', 'B', 'F' ]
]

result

[
  [ 'C', 'A', 'A', 'C' ],
  [ 'C', 'A', 'A', 'C' ],
  [ 'B', 'A', 'A', 'B' ],
  [ 'B', 'B', 'D', 'D' ],
  [ 'F', 'F', 'E', 'E' ]
]

반시계방향으로 돌리기

console.log(board)
function rotateLeft(arr){
	let n=arr[0].length
	let m=arr.length
	let result=Array.from({length:n},()=>Array.from({length:m},()=>0))
	result.forEach((_,i)=>{
	        _.forEach((v,j)=>{
	            result[i][j]=arr[j][m-i]
	        })
	})
    return result
}
console.log(rotateLeft(board))      

board

[
  [ 'C', 'C', 'B', 'D', 'E' ],
  [ 'A', 'A', 'A', 'D', 'E' ],
  [ 'A', 'A', 'A', 'B', 'F' ],
  [ 'C', 'C', 'B', 'B', 'F' ]
]

result

[
  [ 'E', 'E', 'F', 'F' ],
  [ 'D', 'D', 'B', 'B' ],
  [ 'B', 'A', 'A', 'B' ],
  [ 'C', 'A', 'A', 'C' ],
  [ 'C', 'A', 'A', 'C' ]
]
profile
개발!

0개의 댓글