본문 바로가기
Tech-Algorithm

Matrix Rotate

by redcrow 2018. 7. 12.

정사각형의 matrix를 시계방향, 시계반대방향으로 회전시키기.


입력

  1  2  3  4

  5  6  7  8

  9 10 11 12

 13 14 15 16

============

시계방향

 13  9  5  1

 14 10  6  2

 15 11  7  3

 16 12  8  4

============

반시계방향

  4  8 12 16

  3  7 11 15

  2  6 10 14

  1  5  9 13




public class ArrayRotate {

public static void main(String[] args) {

int arr[][] = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};

int result[][] = new int[arr.length][arr[0].length];

System.out.println("입력");

print(arr);

System.out.println("============");

System.out.println("시계방향");

result = rotateClockwise(arr);

print(result);

System.out.println("============");

System.out.println("반시계방향");

result = rotateAnticlockwise(arr);

print(result);


}


public static int[][] rotateClockwise(int arr[][]){

int result[][] = new int[arr.length][arr.length];

for (int i = 0; i < arr.length; i++) {

for (int j = 0; j < arr.length; j++) {

//result[i][j] = arr[j][arr.length-1 -i]; 

result[j][arr.length-1 -i] = arr[i][j];

}

}

return result;

}

public static int[][] rotateAnticlockwise(int arr[][]){

int result[][] = new int[arr.length][arr.length];

for (int i = 0; i < arr.length; i++) {

for (int j = 0; j < arr.length; j++) {

result[i][j] = arr[j][arr.length-1-i]; 

}

}

return result;

}

public static void print(int arr[][]) {

for (int i = 0; i < arr.length; i++) {

for (int j = 0; j < arr.length; j++) {

System.out.printf("%3d", arr[i][j]);

}

System.out.println("");

}

}

}





'Tech-Algorithm' 카테고리의 다른 글

동적프로그래밍 - 배낭 채우기 문제(Knapsack Problem)  (0) 2022.06.14
Spiral Matrix  (0) 2018.07.12

댓글