크기가 N인 파스칼의 삼각형을 출력한다.
N은 1이상 10 이하의 정수이다.
우선 배열을 두 개 잡았다. 하나는 파스칼의 삼각형을 기억하고, 하나는 기억한 삼각형에서 다음 줄을 계산한다.
그리고 첫번째 수와 마지막 수가 항상 1인 것을 계산하기 위해 맨앞과 뒤를 0으로 채웠다. if문으로 j==0, j==(i-1)일 때를 구분해줘도 된다.
n[12]에 파스칼의 삼각형을 저장해주고, n2[10]에서 계산한다.
n[1]에는 1이 저장되어 있다. 2번째 줄에서는 n2에서 0+1, 1+0을 계산해 1 1을 출력한다. 그럼 n2에 1 1이 저장되었으므로 n[1], n[2]에 1, 1을 저장한다. 그럼 n에는 {0, 1, 1, 0, 0 ... }(0은 초기화된 값) 이렇게 저장이 된다. 파스칼의 삼각형 두번째 줄이다.
3번째
n2 : n1을 이용해 계산 -> n2 = {1, 2, 1, 0, 0 ... }
n : n2에 계산된 3번째 줄을 다시 저장 -> n = {0, 1, 2, 1, 0, 0 ...}
이렇게 두 배열이 돌아가게 된다.
#include <stdio.h>
int main(void) {
int test_case, T;
scanf("%d", &T);
for (test_case = 1; test_case <= T; ++test_case)
{
int N, n[12] = { 0 }, n2[10] = { 0 };
scanf("%d", &N);
printf("#%d\n", test_case);
n[1] = 1; //파스칼의 삼각형 첫번째
for (int i = 1; i <= N; i++) { //N줄을 출력해야 함
for (int j = 0; j < i; j++) { //각 줄은 i만큼 출력됨
n2[j] = n[j] + n[j+1]; //n에서 현재 인덱스와 다음 인덱스를 더함
printf("%d ", n2[j]); //더한 값을 출력
}
for (int j = 0; j < i; j++) {
n[j+1] = n2[j]; //n에 n2를 저장함
}
printf("\n");
}
}
return 0;
}
'SWEA > [D2]' 카테고리의 다른 글
[C] SWEA 1974 스도쿠 검증 (0) | 2022.03.06 |
---|---|
[C] SWEA 2007 패턴 마디의 길이 (0) | 2022.03.03 |
[C언어] SWEA 1984 중간 평균값 구하기 (0) | 2022.03.01 |
[C언어] SWEA 1285 아름이의 돌 던지기 (0) | 2022.03.01 |
[C언어] SWEA 1288 새로운 불면증 치료법 (0) | 2022.02.27 |