# Rotate the matrix right by K times

Given a matrix of size N*M, and a number K. We have to rotate the matrix K times to the right side.

Examples:

```Input :  N = 3, M = 3, K = 2
12 23 34
45 56 67
78 89 91

Output : 23 34 12
56 67 45
89 91 78

Input :  N = 2, M = 2, K = 2
1 2
3 4

Output : 1 2
3 4
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

A simple yet effective approach is to consider each row of the matrix as an array and perform an array rotation. Which can be done by copying the elements from K to end of array to starting of array using temporary array. And then the remaining elements from start to K-1 to end of the arryay.

Lets take an example:

## C++

 `// CPP program to rotate a matrix right by k times ` `#include ` ` `  `// size of matrix ` `#define M 3 ` `#define N 3 ` ` `  `using` `namespace` `std; ` ` `  `// function to rotate matrix by k times ` `void` `rotateMatrix(``int` `matrix[][M], ``int` `k) { ` `  ``// temporary array of size M ` `  ``int` `temp[M]; ` ` `  `  ``// within the size of matrix ` `  ``k = k % M; ` ` `  `  ``for` `(``int` `i = 0; i < N; i++) { ` ` `  `    ``// copy first M-k elements to temporary array ` `    ``for` `(``int` `t = 0; t < M - k; t++) ` `      ``temp[t] = matrix[i][t]; ` ` `  `    ``// copy the elements from k to end to starting ` `    ``for` `(``int` `j = M - k; j < M; j++) ` `      ``matrix[i][j - M + k] = matrix[i][j]; ` ` `  `    ``// copy elements from temporary array to end ` `    ``for` `(``int` `j = k; j < M; j++) ` `      ``matrix[i][j] = temp[j - k]; ` `  ``} ` `} ` ` `  `// function to display the matrix ` `void` `displayMatrix(``int` `matrix[][M]) { ` `  ``for` `(``int` `i = 0; i < N; i++) { ` `    ``for` `(``int` `j = 0; j < M; j++) ` `      ``cout << matrix[i][j] << ``" "``; ` `    ``cout << endl; ` `  ``} ` `} ` ` `  `// Driver's code ` `int` `main() { ` `  ``int` `matrix[N][M] = {{12, 23, 34}, ` `                     ``{45, 56, 67},  ` `                     ``{78, 89, 91}}; ` `  ``int` `k = 2; ` ` `  `  ``// rotate matrix by k ` `  ``rotateMatrix(matrix, k); ` ` `  `  ``// display rotated matrix ` `  ``displayMatrix(matrix); ` ` `  `  ``return` `0; ` `} `

/div>

## Java

 `// Java program to rotate a matrix  ` `// right by k times ` ` `  `class` `GFG ` `{ ` `    ``// size of matrix ` `    ``static` `final` `int` `M=``3``; ` `    ``static` `final` `int` `N=``3``; ` `     `  `    ``// function to rotate matrix by k times ` `    ``static` `void` `rotateMatrix(``int` `matrix[][], ``int` `k) ` `    ``{ ` `        ``// temporary array of size M ` `        ``int` `temp[]=``new` `int``[M]; ` `         `  `        ``// within the size of matrix ` `        ``k = k % M; ` `         `  `        ``for` `(``int` `i = ``0``; i < N; i++) ` `        ``{ ` `         `  `            ``// copy first M-k elements  ` `            ``// to temporary array ` `            ``for` `(``int` `t = ``0``; t < M - k; t++) ` `            ``temp[t] = matrix[i][t]; ` `         `  `            ``// copy the elements from k  ` `            ``// to end to starting ` `            ``for` `(``int` `j = M - k; j < M; j++) ` `            ``matrix[i][j - M + k] = matrix[i][j]; ` `         `  `            ``// copy elements from  ` `            ``// temporary array to end ` `            ``for` `(``int` `j = k; j < M; j++) ` `            ``matrix[i][j] = temp[j - k]; ` `        ``} ` `    ``} ` `     `  `    ``// function to display the matrix ` `    ``static` `void` `displayMatrix(``int` `matrix[][]) ` `    ``{ ` `        ``for` `(``int` `i = ``0``; i < N; i++) ` `        ``{ ` `            ``for` `(``int` `j = ``0``; j < M; j++) ` `            ``System.out.print(matrix[i][j] + ``" "``); ` `            ``System.out.println(); ` `        ``} ` `    ``}  ` `     `  `    ``// Driver code ` `    ``public` `static` `void` `main (String[] args) ` `    ``{ ` `        ``int` `matrix[][] = {{``12``, ``23``, ``34``}, ` `                        ``{``45``, ``56``, ``67``},  ` `                        ``{``78``, ``89``, ``91``}}; ` `    ``int` `k = ``2``; ` `     `  `    ``// rotate matrix by k ` `    ``rotateMatrix(matrix, k); ` `     `  `    ``// display rotated matrix ` `    ``displayMatrix(matrix); ` `    ``} ` `} ` ` `  `// This code is contributed by Anant Agarwal. `

## Python3

 `# Python program to rotate  ` `# a matrix right by k times ` ` `  `# size of matrix ` `M ``=` `3` `N ``=` `3` `matrix ``=` `[[``12``, ``23``, ``34``], ` `          ``[``45``, ``56``, ``67``],  ` `          ``[``78``, ``89``, ``91``]] ` ` `  `# function to rotate ` `# matrix by k times ` `def` `rotateMatrix(k) : ` ` `  `    ``global` `M, N, matrix ` `     `  `    ``# temporary array  ` `    ``# of size M ` `    ``temp ``=` `[``0``] ``*` `M ` `     `  `    ``# within the size ` `    ``# of matrix ` `    ``k ``=` `k ``%` `M ` `     `  `    ``for` `i ``in` `range``(``0``, N) :  ` `     `  `        ``# copy first M-k elements ` `        ``# to temporary array ` `        ``for` `t ``in` `range``(``0``, M ``-` `k) : ` `            ``temp[t] ``=` `matrix[i][t] ` `     `  `        ``# copy the elements from  ` `        ``# k to end to starting ` `        ``for` `j ``in` `range``(M ``-` `k, M) : ` `            ``matrix[i][j ``-` `M ``+` `k] ``=` `matrix[i][j] ` `     `  `        ``# copy elements from  ` `        ``# temporary array to end ` `        ``for` `j ``in` `range``(k, M) : ` `            ``matrix[i][j] ``=` `temp[j ``-` `k] ` `     `  `# function to display ` `# the matrix ` `def` `displayMatrix() : ` ` `  `    ``global` `M, N, matrix ` `    ``for` `i ``in` `range``(``0``, N) : ` `     `  `        ``for` `j ``in` `range``(``0``, M) : ` `            ``print` `(``"{} "` `.  ` `                   ``format``(matrix[i][j]), end ``=` `"") ` `        ``print` `() ` ` `  `# Driver code ` `k ``=` `2` ` `  `# rotate matrix by k ` `rotateMatrix(k) ` ` `  `# display rotated matrix ` `displayMatrix() ` ` `  `# This code is contributed by  ` `# Manish Shaw(manishshaw1) `

## C#

 `// C# program to rotate a   ` `// matrix right by k times ` `using` `System; ` ` `  `class` `GFG { ` `     `  `    ``// size of matrix ` `    ``static` `int` `M=3; ` `    ``static` `int` `N=3; ` `     `  `    ``// function to rotate matrix by k times ` `    ``static` `void` `rotateMatrix(``int` `[,] matrix,  ` `                             ``int` `k) ` `    ``{ ` `         `  `        ``// temporary array of size M ` `        ``int` `[] temp=``new` `int``[M]; ` `         `  `        ``// within the size of matrix ` `        ``k = k % M; ` `         `  `        ``for` `(``int` `i = 0; i < N; i++) ` `        ``{ ` `         `  `            ``// copy first M-k elements  ` `            ``// to temporary array ` `            ``for` `(``int` `t = 0; t < M - k; t++) ` `            ``temp[t] = matrix[i, t]; ` `         `  `            ``// copy the elements from k  ` `            ``// to end to starting ` `            ``for` `(``int` `j = M - k; j < M; j++) ` `            ``matrix[i, j - M + k] = matrix[i, j]; ` `         `  `            ``// copy elements from  ` `            ``// temporary array to end ` `            ``for` `(``int` `j = k; j < M; j++) ` `            ``matrix[i, j] = temp[j - k]; ` `        ``} ` `    ``} ` `     `  `    ``// function to display the matrix ` `    ``static` `void` `displayMatrix(``int` `[,] matrix) ` `    ``{ ` `        ``for` `(``int` `i = 0; i < N; i++) ` `        ``{ ` `            ``for` `(``int` `j = 0; j < M; j++) ` `            ``Console.Write(matrix[i, j] + ``" "``); ` `            ``Console.WriteLine(); ` `        ``} ` `    ``}  ` `     `  `    ``// Driver code ` `    ``public` `static` `void` `Main () ` `    ``{ ` `        ``int` `[,] matrix = {{12, 23, 34}, ` `                          ``{45, 56, 67},  ` `                          ``{78, 89, 91}}; ` `        ``int` `k = 2; ` `         `  `        ``// rotate matrix by k ` `        ``rotateMatrix(matrix, k); ` `         `  `        ``// display rotated matrix ` `        ``displayMatrix(matrix); ` `    ``} ` `} ` ` `  `// This code is contributed by KRV. `

## PHP

 ` `

Output:

```23 34 12
56 67 45
89 91 78
```

This article is attributed to GeeksforGeeks.org

## tags:

Matrix rotation Matrix

code

load comments