반응형
2차원 배열을 90도 단위씪 오른쪽으로 회전하며 이떄 4n번(360도) 회전하면 원 배열과 결과값이 같아진다
그림 1-1
원 배열은 행과 열의 수가 같은 정방향 배열이라고 가정하고 하겠습니다.
2차원 배열은 90도 단위로 회전하게 됩니다. 90도 , 180도, 270도, 360도 회전한 결과는 원 배열과 같으며 이후에는
4개의 형태를 반복한다. 간단한 예제를 통해서 좀더 이해가 가도록 알아가 보도록 하겠습니다.
- 90도 회전
#include <stdio.h>
void array_rotate(){
char A[5][5], B[5][5];
int i,j;
char alphabet='A';
for(i=0; i<5; i++){
for(j=0; j<5; j++){
A[i][j]=alphabet;
alphabet++;
}
}
for(i=0; i<5; i++){
for(j=0; j<5; j++){
printf("%c ",A[i][j]);
}
printf("\n");
}
printf("==================\n");
for(i=0; i<5; i++){
for(j=0; j<5; j++){
B[j][4-i]=A[i][j];
}
}
for(i=0; i<5; i++){
for(j=0; j<5; j++){
printf("%c ",B[i][j]);
}
printf("\n");
}
}
int main(void){
array_rotate();
return 0;
}
소스코드 부분에서 B[j][4-i] = A[i][j] 문으로 인하여 90도 회전된 B배열을 만들 수 있습니다.
이 예제에서 알파벳이 회전을 하게 되면 어디 위치로 가는지 잘 생각해본다면 쉽게 이해가 가실 것 입니다.
180도와 270도 회전은 따로 설명은 하지 않겠습니다.
- 180도 회전
#include <stdio.h>
void array_rotate(){
char A[5][5], B[5][5];
int i,j;
char alphabet='A';
for(i=0; i<5; i++){
for(j=0; j<5; j++){
A[i][j]=alphabet;
alphabet++;
}
}
for(i=0; i<5; i++){
for(j=0; j<5; j++){
printf("%c ",A[i][j]);
}
printf("\n");
}
printf("==================\n");
for(i=0; i<5; i++){
for(j=0; j<5; j++){
B[4-i][4-j]=A[i][j];
}
}
for(i=0; i<5; i++){
for(j=0; j<5; j++){
printf("%c ",B[i][j]);
}
printf("\n");
}
}
int main(void){
array_rotate();
return 0;
}
- 270도 회전
#include <stdio.h>
void array_rotate(){
char A[5][5], B[5][5];
int i,j;
char alphabet='A';
for(i=0; i<5; i++){
for(j=0; j<5; j++){
A[i][j]=alphabet;
alphabet++;
}
}
for(i=0; i<5; i++){
for(j=0; j<5; j++){
printf("%c ",A[i][j]);
}
printf("\n");
}
printf("==================\n");
for(i=0; i<5; i++){
for(j=0; j<5; j++){
B[4-j][i]=A[i][j];
}
}
for(i=0; i<5; i++){
for(j=0; j<5; j++){
printf("%c ",B[i][j]);
}
printf("\n");
}
}
int main(void){
array_rotate();
return 0;
}
이렇게 이번 배열 회전 알고리즘을 마치겠습니다.
'study > C언어' 카테고리의 다른 글
[C언어] 주석처리 (0) | 2019.12.20 |
---|---|
[C언어] 1. HelloWorld (0) | 2019.12.20 |
[C언어] 테트리스 (0) | 2019.12.20 |
다차원 배열(2차원 배열, 3차원 배열) (0) | 2019.12.17 |
C언어로 야구게임 만들기 (0) | 2019.12.16 |