ধরি একটি N×N বর্গাকার ম্যাট্রিক্স দেওয়া আছে। এই ম্যাট্রিক্সটিকে কাউন্টারক্লকওয়াইজ (বামদিকে) ৯০ ডিগ্রি ঘুরাতে হবে।
ইনপুট: N = 3, matrix[][] = {{1,2,3}, {4,5,6}, {7,8,9}}
আউটপুট: 3 6 9 2 5 8 1 4 7
ব্যাখ্যা: ম্যাট্রিক্সটিকে বামদিকে ৯০ ডিগ্রি ঘুরালে উপরের আউটপুট পাওয়া যায়।
সমাধানের পদ্ধতি
প্রথমে ম্যাট্রিক্সটির ট্রান্সপোজ (transpose) বের করা হয়, তারপর প্রতিটি সারি (row) এর এলিমেন্টগুলো রিভার্স করা হয়।
- বর্গাকার ম্যাট্রিক্স ইনপুট নিন।
- ম্যাট্রিক্সটির ট্রান্সপোজ বের করুন (সারি এবং কলাম বিনিময় করুন)।
- প্রতিটি সারির প্রথম এবং শেষ এলিমেন্ট সোয়াপ করে সারিটি রিভার্স করুন।
- ফলাফল প্রিন্ট করুন।
জাভা কোড উদাহরণ
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.println();
}
}
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