문제 링크
요약
- 규칙찾기
최종
결과
- 90도 회전할 때 각 좌표가 어떻게 바뀌는지 규칙을 찾고,
- 기존의 matrix 에 그대로 적용해야 하기 때문에 어떻게 iterate 하고 어떤 값을 buffering 할지를 잘 생각하면 된다.
- 주인장은 하나의 값을 90도 돌려서 움직이면 그 자리에 있던 값을 buffering 해두고 그 자리의 90도 위치에 있는 자리로 iterate 하는 방식으로 구현했다.
class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
int n = matrix.size();
for (int i = 0; i < ((n + 1) >> 1); i++) {
for (int j = i; j < (n - i - 1); j++) {
int iter_i = i;
int iter_j = j;
int iter_buf = matrix[iter_i][iter_j];
for (int x = 0; x < 4; x++) {
int next_i = iter_j;
int next_j = n - iter_i - 1;
int next_buf = matrix[next_i][next_j];
matrix[next_i][next_j] = iter_buf;
iter_i = next_i;
iter_j = next_j;
iter_buf = next_buf;
}
}
}
}
};