알고리즘 논리
*사각형이 N X N, 즉 정사각형이라는 가정을 한다
1. 가장 가장자리의 테두리 영역부터 회전시킨다 (s, e)
2. 가장 바깥 테두리의 시작점을 0, 끝점을 map.length-1 위치라고 생각하자
3. 각 변을 Top, Left, Bottom, Right라고 할 때 각 변의 첫자리, 두 번째 자리, 세 번째 자리 순으로 교체시킨다 (i, j)
static void rotate(int[][] map) {
for (int s = 0, e = map.length - 1; s < e; s++, e--) {
for (int i = s, j = e; i < e; i++, j--) {
int tmp = map[s][i];
map[s][i] = map[i][e];
map[i][e] = map[e][j];
map[e][j] = map[j][s];
map[j][s] = tmp;
}
}
}
public static void main(String[] args) throws IOException {
int[][] map = {
{ 1, 0, 0, 0, 1 },
{ 0, 1, 0, 1, 0 },
{ 0, 0, 1, 0, 0 },
{ 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0 },
};
rotate(map);
print(map);
rotate(map);
print(map);
rotate(map);
print(map);
bw.write(result + "");
bw.flush();
}
private static void print(int[][] map) {
System.out.println("-----------------");
for (int i = 0; i < map.length; i++) {
for (int j = 0; j < map[0].length; j++) {
System.out.print(map[i][j] + " ");
}
System.out.println("");
}
}