본문으로 바로가기


파스칼의 삼각형


Pascal's triangle



파스칼의 삼각형이란 고등학교 수학시간에 배우는 이항계수를 삼각형 모양으로 나열한 것이다.


위 두개의 수의 합이 아래의 수가 된다는 것이 특징.



전개과정은 다음과 같다.


1. b[k] = a[k - 1] + a[k], k는 1부터 시작. (b[1] = 1로 만들기 위해)


2. n번째 줄이라면 배열의 길이는 n. 길이가 줄어드는 경우는 없으니 배열 b를 배열 a로 복사한 뒤에는 배열b를 초기화 시킬 필요가 없음.



이번 코딩의 출력 결과는 다음과 같다.



왼쪽에 공백을 입력한 상태이다.


자릿수는 4.



코드는 다음과 같다.


#include<stdio.h>
#define MAX 100                         //배열 크기 100

int main() {
    int a[MAX] = { 0, };
    int b[MAX] = { 0, };
    int i, j, k, n;
    printf("Enter : ");
    scanf("%d", &n);
    
    a[1] = 1;                           //1로 시작

    if (n == 1) {                       //한 줄만 출력할 때
        printf("%4d\n", a[1]);
    }
    else {                              //왼쪽 공백 때문에 두 줄 이상은 따로 코딩
        for (i = 1; i <= n; i += 1) {
            for (j = 1; j <= 2 * (n - i); j += 1) {     //왼쪽 공백 입력
                printf(" ");
            }

            if (i == 1) {                               //첫번째 줄 바로 출력
                printf("%4d\n", a[1]);
            }
            else {
                for (k = 1; k <= i; k += 1) {
                    b[k] = a[k - 1] + a[k];
                    printf("%4d", b[k]);
                }
                printf("\n");                           //배열 복사
                for (k = 1; k <= i; k += 1) {
                    a[k] = b[k];
                }
            }
        }
    }

    return 0;
}


[Visual Studio Code 사용]



맨 위로