문제
2차원 이진 배열 arr(0 또는 1로만 구성된 배열)을 첫 번째이자 유일한 인수로 사용하는 JavaScript 함수를 작성해야 합니다.
우리 함수는 먼저 행렬을 수평으로 뒤집은 다음 반전하고 결과 행렬을 반환해야 합니다.
행렬을 수평으로 뒤집는다는 것은 행렬의 각 행이 반전된다는 것을 의미합니다. 예를 들어 [1, 1, 0]을 가로로 뒤집으면 [0, 1, 1]이 됩니다.
행렬을 반전한다는 것은 각 0이 1로 대체되고 각 1이 0으로 대체됨을 의미합니다. 예를 들어, [0, 1, 1]을 반전하면 [1, 0, 0]이 됩니다.
예를 들어 함수에 대한 입력이
인 경우입력
const arr = [ [1, 1, 0], [1, 0, 1], [0, 0, 0] ];
출력
const output = [ [1,0,0], [0,1,0], [1,1,1] ];
출력 설명
먼저 각 행을 뒤집습니다 -
[[0,1,1],[1,0,1],[0,0,0]]
그런 다음 행렬을 반전시킵니다 -
[[1,0,0],[0,1,0],[1,1,1]]
예시
다음은 코드입니다 -
const arr = [ [1, 1, 0], [1, 0, 1], [0, 0, 0] ]; const flipAndInvert = (arr = []) => { const invert = n => (n === 1 ? 0 : 1) for(let i = 0; i < arr.length; i++) { for(let j = 0; j < arr[i].length / 2; j++) { const index2 = arr[i].length - 1 - j if(j === index2) { arr[i][j] = invert(arr[i][j]) } else { const temp = arr[i][j] arr[i][j] = arr[i][index2] arr[i][index2] = temp arr[i][j] = invert(arr[i][j]) arr[i][index2] = invert(arr[i][index2]) } } } }; flipAndInvert(arr); console.log(arr);
출력
[ [ 1, 0, 0 ], [ 0, 1, 0 ], [ 1, 1, 1 ] ]