>웹 프론트엔드 >JS 튜토리얼 >제자리에서 손쉽게 매트릭스 회전: 종합 가이드

제자리에서 손쉽게 매트릭스 회전: 종합 가이드

WBOY
WBOY원래의
2024-07-24 17:47:291041검색

Effortlessly Rotate a Matrix in Place: A Comprehensive Guide

행렬을 시계 방향으로 90도 회전시키는 것은 컴퓨터 과학 및 기술 면접에서 흔히 발생하는 문제입니다. 이 문제는 새 행렬에 추가 메모리를 사용하지 않고 제자리에서 회전을 수행하는 것이 목표이기 때문에 특히 흥미로울 수 있습니다. 이 가이드에서는 명확한 설명과 예제 코드를 통해 이를 달성하는 방법을 살펴보겠습니다.


문제 설명

이미지를 나타내는 n x n 2D 행렬 A가 제공됩니다. 당신의 임무는 이미지를 시계 방향으로 90도 회전시키는 것입니다. 추가 어레이를 사용하는 경우 부분 점수만 받게 됩니다.

문제 제약

1≤n≤1000

입력 형식

정수의 2D 행렬 A

출력 형식

2차원 회전 행렬

입력 예

[
    [1, 2],
    [3, 4]
]

예제 출력

[
    [3, 1],
    [4, 2]
]

예시 설명

행렬을 90도 회전한 후:

  • 1이 2위로 이동
  • 2가 4위로 이동
  • 4가 3위로 이동
  • 3이 1위로 이동

단계별 솔루션

1단계: 행렬 전치

  • 행렬을 전치한다는 것은 행을 열로, 열을 행으로 변환하는 것을 의미합니다. 이는 주 대각선(왼쪽 상단에서 오른쪽 하단 대각선으로)에서 요소를 교체하여 수행할 수 있습니다.

2단계: 각 행 반전

  • 행렬이 전치되면 다음 단계는 각 행을 뒤집는 것입니다. 이렇게 하면 행렬이 시계 방향으로 90도 회전하게 됩니다.

예제 코드

회전을 수행하는 JavaScript 함수는 다음과 같습니다.

function rotateMatrix(A) {
    const n = A.length;

    // Step 1: Transpose the matrix
    for (let i = 0; i < n; i++) {
        for (let j = i; j < n; j++) {
            let temp = A[i][j];
            A[i][j] = A[j][i];
            A[j][i] = temp;
        }
    }

    // Step 2: Reverse each row
    for (let i = 0; i < n; i++) {
        A[i].reverse();
    }

    return A;
}

// Example usage:
let matrix = [
    [1, 2],
    [3, 4]
];

console.log(rotateMatrix(matrix));

코드 설명

행렬을 전치합니다:

  • 두 개의 중첩 루프를 사용하여 행렬을 반복합니다.
  • 행렬을 전치하려면 A[i][j]와 A[j][i] 요소를 교환하세요.

각 행을 뒤집습니다.

  • 내장된 reverse() 메서드를 사용하여 전치 행렬의 각 행을 반전합니다.

회전된 행렬을 반환합니다.

  • 각 행을 전치하고 역전시킨 후 행렬을 시계 방향으로 90도 회전합니다.

결론

제자리에서 행렬을 회전하는 것은 배열 조작 및 내부 알고리즘에 대한 이해를 보여주는 귀중한 기술입니다. 행렬을 전치한 다음 각 행을 반대로 하면 추가 공간을 사용하지 않고도 원하는 회전을 얻을 수 있습니다. 기술 인터뷰와 코딩 과제에서 문제 해결 능력을 향상하려면 이 방법을 연습하세요.

위 내용은 제자리에서 손쉽게 매트릭스 회전: 종합 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.