귀찮아서 대충 짜봤다~
( 정보 처리 기사 실기 알고리즘 문제집에서 본 기억이... 아님 말고~ )
=============================================================================================
[실행화면]
=============================================================================================
[소스코드]
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i, j, size, temp, count, num = 0;
int **arr;
printf("배열의 사이즈를 입력하세요 : ");
scanf("%d", &size);
// 동적 메모리 생성
arr = (int **)malloc(sizeof(int *) * size);
for(i=0; i<size; ++i)
{
*(arr + i) = (int *)malloc(sizeof(int) * size);
}
// 연산 (값 대입)
i = j = count = 0;
while(1)
{
if(num == size*size)
break;
arr[i++][j--] = ++num;
if((i>size-1) || (j<0)) // 범위를 벗어날 경우
{
if(count < size-1) // ex : 5 입력 후 (0,0), (0,1), (0,2), (0,3), (0,4)
{
j = i;
i = 0;
count++; // 카운팅 (연산의 경계)
}
else // 대각선 정점 찍고 내려오는 부분 (1,4), (2, 4), (3, 4), (4,4)
{
temp = i;
i = j+2;
j = temp-1;
}
}
}
for(i=0; i<size; ++i) // 출력
{
for(j=0; j<size; ++j)
{
printf("%5d", *(*(arr + i) + j));
}
printf("\n");
}
// 동적 메모리 해제
for(i=0; i<size; ++i)
free(*(arr + i));
free(arr);
return 0;
}
=============================================================================================
'IT_Programming > C · C++' 카테고리의 다른 글
[C] 구조체 배열_학생 성적 그래프 (0) | 2009.06.16 |
---|---|
[C] 달팽이 배열 (0) | 2009.06.05 |
[ C++ ] Efficient C++ Key Point 정리 (0) | 2009.06.03 |
[C] 피보나치 수열 [ Ver. 재귀 / 비재귀 ] (0) | 2009.06.02 |
[c] 다이아몬드 지그재그로 출력하기 (출력 문자 : A~Z) (0) | 2009.06.01 |