N×N의 정방 행렬이 주어졌다고 가정해 봅시다. 작업은 매트릭스를 시계 반대 방향으로 회전하는 것입니다. 예를 들어,
입력-1 -
N = 3 matrix[ ][ ] = [ [1 2 3], [4 5 6], [7 8 9] ]
출력 -
3 6 9 2 5 8 1 4 7
설명 :행렬을 시계 반대 방향으로 회전하면 3 6 9 2 5 8 1 4 7과 같은 출력이 생성됩니다.
이 문제를 해결하기 위한 접근 방식
처음에 아이디어는 주어진 행렬의 전치를 찾은 다음 행 방향으로 순회하면서 행렬의 각 요소를 바꾸는 것입니다.
-
정사각 행렬의 입력을 받습니다.
-
행렬의 전치를 구합니다.
-
인덱스 0의 요소를 인덱스 n-1로 바꿉니다.
-
출력을 반환합니다.
예
import java.io.*; class Solution { static void rotateMatrix( int n, int matrix[][]){ for (int i = 0; i < n; i++) { for (int j = i; j < n; j++) { int temp= matrix[i][j]; matrix[i][j]= matrix[j][i]; matrix[j][i]= temp; } } for(int i=0;i<n;i++){ int top=0; int bottom = n-1; while(top<bottom){ int temp = matrix[top][i]; matrix[top][i]=matrix[bottom][i]; matrix[bottom][i] = temp; top++; bottom--; } } } static void displayMatrix(int N, int mat[][]){ for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) System.out.print(" " + mat[i][j]); System.out.print("\n"); } System.out.print("\n"); } public static void main(String[] args){ int N = 3; int mat[][] = { {1,2,3}, {4,5,6}, {7,8,9} }; rotateMatrix(N, mat); displayMatrix(N, mat); } }
출력
위의 코드를 실행하면 다음과 같이 출력이 생성됩니다.
3 6 9 2 5 8 1 4 7