Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C언어로 구현하는 숫자 다이아몬드 패턴 출력 프로그램

주어진 정수 n을 입력받아, 숫자로 이루어진 다이아몬드 패턴을 출력하는 C 프로그램입니다. 이 패턴은 위아래 대칭 구조를 가지며, 중앙을 기준으로 숫자가 증가했다가 감소하는 형태를 띱니다.

실행 예시

입력: n = 3

출력 결과는 다음과 같은 다이아몬드 형태를 가집니다. (이미지 참조)

C언어로 구현하는 숫자 다이아몬드 패턴 출력 프로그램

접근 방식

  • 입력받은 행의 수 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으로 마무리.

알고리즘 흐름

  1. print_pattern(int n) 함수 선언
  2. 첫 줄: 공백 2*n개 출력 후 0 출력 및 개행
  3. 중간 패턴 루프 (i = 1 ~ 2*n - 1)
    • 조건에 따라 좌측 공백 출력
    • 구간별(i < n, i == n, i > n) 숫자 증가/감소 로직 수행
    • 각 행 끝마다 개행
  4. 마지막 줄: 공백 2*n개 출력 후 0 출력
  5. 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;
}

출력 결과

C언어로 구현하는 숫자 다이아몬드 패턴 출력 프로그램

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