[SWEA / C언어] 2005번: 파스칼의 삼각형

728x90
728x90

 

난이도: SWEA D2

 


다른 분들의 코드를 보니 대부분 2차원 배열을 이용해 풀었던데


나는 1차원 배열을 이용해 풀었다

(조금 난잡하긴 하지만...)


1차원 배열 a와 b를 이용해 수를 나타냈는데


파스칼의 삼각형에서 각 숫자 b[i] 는 자신의 왼쪽 위 숫자 a[i - 1]와 자신의 오른쪽 위 숫자 a[i]의 합이라는 성질을 이용하였다


배열 a는 직전 행의 숫자를 나타내고 배열 b는 출력할 행의 숫자를 나타낸다


그리고 배열 c는 현재의 행인 배열 b의 값을 다음 행에서 사용해야 하므로 배열 a로 넘겨주기 위해 temp 형태로 사용했다

 


(코드)

#include<stdio.h>

int a[11];
int b[11];
int c[11];

int main() {
    int test_case, T;
    int N, i, k;
    scanf("%d", &T);
    for (test_case = 1; test_case <= T; test_case++) {
        scanf("%d", &N);
        printf("#%d\n", test_case);
        a[1] = 1;
        for (k = 1; k <= N; k++) {
            for (i = 1; i < k; i++) {
                b[i] = a[i] + a[i - 1];
                c[i] = b[i];
                printf("%d ", b[i]);
            }
            for (i = 1; i < k; i++)
                a[i] = c[i];
            b[k] = 1;
            a[k] = b[k];
            printf("%d ", b[k]);
            printf("\n");
        }
    }
    return 0;
}

난이도: SWEA D2

반응형