AP 프로그래밍

13. codeup 3701 : 파스칼 삼각형 문제 해결

Quettabyte 2023. 6. 5. 14:38

<출처> 코드업 사이트

파스칼 삼각형을 출력하는 문제입니다. 이 문제도 왠지 재귀함수를 이용하여 풀면 좋을 것 같습니다. 

다음과 같이 반복문을 활용하여 여러 숫자를 출력할 것인데요. 삼각형의 가장자리? 부분은 모두 1이기 때문에 i=1 or i=j 조건을 사용하여 1을 출력하여 줍니다. 그리고 배열을 선언하여 각 부분의 수들을 배열에 저장하여 아래로 내려갔을때 위의 수 두개를 합한것을 계산할 수 있도록 합니다. 코드는 다음과 같습니다. 

#include <stdio.h>
int main(){
long long arr[100][100]; //배열 선언
int n;  

scanf("%d",&n);  //삼각형 층 입력

for(int i=1;i<=n;i++){      //가로줄
    for(int j=1;j<=i;j++){    //세로줄
        if(j==1 || j==i){    //1이 들어갈 자리(삼각형 가장자리)
            arr[i][j]=1;    // 배열에 1저장
            printf("1 "); //1출력
        }
        else  
        {
            arr[i][j]=arr[i-1][j-1]+arr[i-1][j];   //위의 두개 수 합
            printf("%lld ",arr[i][j]);   //출력
        }
    }
    printf("\n");   //줄바꿈
}

}

파스칼 삼각형의 형태를 재귀함수로 표현하였습니다.

글을 읽어 주셔서 감사합니다.