1. 배열을 시계방향으로 돌리면 인덱스가 어떻게 바뀌는가?
인덱스는 이렇게 변한다, 자세히 보다보면 규칙이 보인다.
그 규칙은 바로
원래 인덱스가 (i, j)라면 바뀐 인덱스는 (j, n - 1 - i ) (n은 원래 배열의 세로길이)
//-1을 하는 이유는 배열이 0부터 시작이기 때문...
2. 반시계방향은?
반시계 방향은 원래 인덱스 (i, j)에서 (n - 1 - j, i)가 된다.
#그리고 만약 배열의 가로, 세로길이가 다르다면 가로 세로길이를 교환해야 한다.
3. 코드
void Rotate(int dir) //-1 : 반시계, 1 : 시계 방향
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
if (dir == -1) tmp[n - j - 1][i] = board[i][j];// 배열이 0부터 시작이라면 -1
else tmp[j][n - i - 1] = board[i][j];
}
}
swap(n, m);
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++) board[i][j] = tmp[i][j];
}