프로그램 개요
다이아몬드 패턴은 피라미드 패턴과 역피라미드 패턴을 결합한 형태입니다. 위쪽 절반은 숫자가 점점 늘어나는 피라미드 모양으로 출력되고, 아래쪽 절반은 반대로 줄어들며 대칭을 이룹니다. 이 패턴은 중첩 반복문(nested loop)의 동작 원리를 이해하는 데 매우 유용한 예제로 자주 활용됩니다.
알고리즘
1행: 1 출력 2행: 1, 2, 3 출력 3행: 1, 2, 3, 4, 5 출력 4행: 1, 2, 3, 4, 5, 6, 7 출력 5행: 1, 2, 3, 4, 5, 6, 7, 8, 9 출력 5행 아래에 4행부터 1행까지 동일한 내용을 역순으로 출력
C 소스 코드
/* 다이아몬드 패턴 출력 프로그램 */
#include<stdio.h>
int main(){
int i,j,k;
clrscr();
printf("\n");
printf("Diamond Pattern");
printf("\n");
printf("\n");
/* 상단 피라미드 부분 */
for(i = 1;i<=5;i++){
for(j = i;j<5;j++){
printf(" ");
}
for(k = 1;k<(i*2);k++){
printf("%d",k);
}
printf("\n");
}
/* 하단 역피라미드 부분 */
for(i = 4;i>=1;i--){
for(j = 5;j>i;j--){
printf(" ");
}
for(k = 1;k<(i*2);k++){
printf("%d",k);
}
printf("\n");
}
getch();
return 0;
}코드 설명
이 프로그램은 두 개의 주요 루프로 구성됩니다.
상단 부분: 바깥쪽 for 문이 1부터 5까지 행을 제어합니다. 첫 번째 내부 루프는 각 행마다 공백을 출력해 오른쪽 정렬 효과를 만들고, 두 번째 내부 루프는 k < i*2 조건에 따라 홀수 개의 숫자를 출력합니다.
하단 부분: 바깥쪽 for 문이 4부터 1까지 감소하며 역피라미드를 그립니다. 공백 출력 조건(j > i)과 숫자 출력 로직은 상단과 동일하게 유지되어 완벽한 대칭 구조를 완성합니다.
참고:clrscr()과getch()는 Turbo C 등 구형 컴파일러에서 사용되는 함수입니다. 최신 컴파일러(GCC 등)에서는 해당 함수를 제거하고system("pause")또는 표준 입력 함수로 대체할 수 있습니다.
실행 결과
1
123
12345
1234567
123456789
1234567
12345
123
1위와 같이 중앙을 기준으로 좌우 대칭인 다이아몬드 모양의 숫자 패턴이 화면에 출력됩니다. 행 크기를 변경하고 싶다면 루프의 반복 횟수(현재 5)를 조정하면 됩니다.