반응형
이런 방법을 깨닫게 되다니.. 써먹을 일이 많을 것 같다.
이론에 대한 자세한 방식은, 아래 블로그에서 너무나도 잘 설명해 주고 있다!
위 블로그에서는, 시계방향 90도 회전을 다루고 있는데
나는 이를 토대로 반시계방향 90도에 대해서 구현해 보았다.
5 x 5의 A배열을, 반시계방향으로 90도 회전시킨 B배열을 얻고 싶을때
A배열의 1행만 생각해보면 된다.
A배열의 1행 부분인 (0, 0) (0, 1) (0, 2) (0, 3) (0, 4) 이 90도 회전되었을 때
B배열의 (4, 0) (3, 0) (2, 0) (1, 0) (0 ,0) 으로 가게 된다.
이를 토대로 식을 세울 수 있다.
B[B_row][B_col] = A[B_col][4 - B_row - 1]
코드는 이렇게 된다.
// 반시계방향 90도 회전
void rotate() {
double tmp[5][5];
for(int i = 0; i < 5; i++) {
for(int j = 0; j < 5; j++) {
tmp[i][j] = f[j][5 - i - 1];
}
}
memmove(f, tmp, sizeof(f)); // dest, src, size
}
memmove(dest, src, size) 를 통해서 배열을 복사할 수 있다. memmove함수는 <cstring> 헤더에 포함되어 있다.
반응형
'[알고리즘 + 자료구조]' 카테고리의 다른 글
BFS와 다익스트라의 차이와 다익스트라 분석 (1) | 2023.11.22 |
---|---|
[알고리즘] Floyd Warshall (0) | 2022.10.26 |
[C++] 정규표현식, 정규식 유형 알아보기 (1) | 2022.09.29 |
BFS depth 계산 (0) | 2021.10.08 |
[알고리즘] CCW (0) | 2021.09.29 |