문제 내용은 4X4 int형 2차원 배열을 선언하고, 모든 요소를 아래 모양과 같은 형태로 초기화한다.
그리고 배열의 요소들을 오른쪽 방향으로 90도씩 이동시켜서 출력하는 프로그램을 작성해보자 입니다.
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16 (문제에서 제시한 배열의 형태)
이렇게 초기화된 배열을
13 9 5 1
14 10 6 2
15 11 7 3
16 12 8 4
같이 90도 이동시켜서 출력하란 문제인데요. 일단 저런 식으로 출력이 되게 코드는 짰습니다.
다만 for문이 너무 중첩되면서 가독성도 떨어지고 제가 한 방식이 최선인지 의문이 들더군요.
아래는 제가 짠 코드입니다.
#include<stdio.h>
void Turn(int(*arr)[4]);
int main(void)
{
int arr[4][4]={
{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16}
};
Turn(arr);
return 0;
}
void Turn(int(*arr)[4])
{
int i, j, k;
int arr2[4][4]={};
for(k=0;k<4;k++)
{
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
arr2[j][3-i]=arr[i][j];
}
}
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
printf("%4d", arr2[i][j]);
arr[i][j]=arr2[i][j];
}
printf("\n");
}
printf(" \n\n");
}
}
여기서 Turn 함수를 어떻게 하면 더보기 좋게 짤 수 있을까요??
고수분들이라면 어떻게 코드를 짜실지 궁금합니다. |