습관처럼
C++ - n x n 2차원 배열에 대한 조작 (90도 회전 / 점대칭 / 선대칭) 본문
[n x n 2차원 배열에 대한 조작 (90도 회전 / 점대칭 / 선대칭)]
(i, j) : i 행, j 열 이라고 가정.
(1) 90도 조작
(i, j) => (j, n - i - 1)
(2) x축 대칭
(i, j) => (n - i - 1, j)
(3) y축 대칭
(i, j) => (i, n - j - 1)
(4) 점대칭
(i, j) => (n - i - 1, n - j - 1)
void turn(){
int tmp_arr[20][20]; // 임시로 배열을 생성하여 이곳에 원본을 조작한 배열을 기록해
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++){
tmp_arr[n - i - 1][j] = arr[i][j]; // x축 대칭
tmp_arr[i][n - j - 1] = arr[i][j]; // y축 대칭
tmp_arr[n - i - 1][n - j - 1] = arr[i][j]; // 점대칭
tmp_arr[j][n - i - 1] = arr[i][j]; // 90도 회전
}
// 원본 배열에 다시 복사하는 과정
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
arr[i][j] = tmp_arr[i][j];
}
출처 : https://yomyom0824.tistory.com/57
관련 알고리즘 문제 :
https://www.acmicpc.net/problem/3023
'Language > C++' 카테고리의 다른 글
C++ - String 클래스, 문자열 총정리 (0) | 2020.06.19 |
---|---|
C++ - 1차원 배열에서의 시계방향, 반시계 방향 (feat: rotate) (0) | 2020.05.01 |
C++ - Algorithm 헤더 파일 binary_search(), lower_bound(), upper_bound() (0) | 2020.04.13 |
C++ - Algorithm 헤더 파일 replace(), replace_if(), remove(), remove_if() (0) | 2020.04.13 |
C++ - Algorithm 헤더 파일 reverse(), rotate(), random_shuffle() (0) | 2020.04.13 |