주어진 정수 n을 입력받아, 숫자로 이루어진 다이아몬드 패턴을 출력하는 C 프로그램입니다. 이 패턴은 위아래 대칭 구조를 가지며, 중앙을 기준으로 숫자가 증가했다가 감소하는 형태를 띱니다.
실행 예시
입력: n = 3
출력 결과는 다음과 같은 다이아몬드 형태를 가집니다. (이미지 참조)

접근 방식
- 입력받은 행의 수
n을 기준으로 전체 행 수는(2 * n) + 1개가 됩니다. - 첫 번째 줄과 마지막 줄은 공백
2 * n개 뒤에0을 출력합니다. - 중간 부분(
1부터2n-1까지 행)은 좌우 공백과 숫자 시퀀스로 구성됩니다. - 상단부 (i < n): 왼쪽에
(n - i) * 2개의 공백을 두고,0부터i까지 증가했다가i-1부터1까지 감소한 뒤0으로 끝납니다. - 중앙 줄 (i == n): 공백 없이
0부터n까지 증가,n-1부터1까지 감소 후0출력. - 하단부 (i > n): 왼쪽에
(i % n) * 2개 공백, 숫자는0부터n - (i - n)까지 증가 후 감소하며0으로 마무리.
알고리즘 흐름
print_pattern(int n)함수 선언- 첫 줄: 공백
2*n개 출력 후0출력 및 개행 - 중간 패턴 루프 (
i = 1~2*n - 1)- 조건에 따라 좌측 공백 출력
- 구간별(
i < n,i == n,i > n) 숫자 증가/감소 로직 수행 - 각 행 끝마다 개행
- 마지막 줄: 공백
2*n개 출력 후0출력 main()에서n=3으로 함수 호출
전체 소스 코드
#include <stdio.h>
void print_pattern(int n) {
int i, j;
// 첫 번째 줄: 공백 후 0 출력
for (i = 1; i <= n * 2; i++)
printf(" ");
printf("0\n");
// 중간 다이아몬드 패턴 생성
for (i = 1; i <= (n * 2) - 1; i++) {
// 좌측 공백 출력
if (i < n) {
for (j = 1; j <= (n - i) * 2; j++)
printf(" ");
} else {
for (j = 1; j <= (i % n) * 2; j++)
printf(" ");
}
// 숫자 패턴 출력
if (i < n) { // 상단부
for (j = 0; j <= i % n; j++)
printf("%d ", j);
for (j = (i % n) - 1; j > 0; j--)
printf("%d ", j);
printf("0");
} else if (i > n) { // 하단부
for (j = 0; j <= n - (i - n); j++)
printf("%d ", j);
for (j = (n - (i - n)) - 1; j > 0; j--)
printf("%d ", j);
printf("0");
} else { // 중앙 줄 (i == n)
for (j = 0; j <= n; j++)
printf("%d ", j);
for (j = n - 1; j > 0; j--)
printf("%d ", j);
printf("0");
}
printf("\n");
}
// 마지막 줄: 공백 후 0 출력
for (i = 1; i <= n * 2; i++)
printf(" ");
printf("0");
}
int main() {
int n = 3;
print_pattern(n);
return 0;
}
출력 결과

위 코드는 n=3일 때 중앙을 기준으로 숫자가 대칭적으로 확장/수축되는 다이아몬드 패턴을 콘솔에 출력합니다. n 값을 변경하면 다양한 크기의 패턴을 생성할 수 있습니다.