N

(SWEA c++)2005. 파스칼의 삼각형 본문

SW Expert Academy

(SWEA c++)2005. 파스칼의 삼각형

naeunchan 2020. 9. 28. 15:09
728x90
반응형

swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5P0-h6Ak4DFAUq&categoryId=AV5P0-h6Ak4DFAUq&categoryType=CODE

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

2차원 배열을 이용하여 수를 채워나가도록 한다.

최대가 10이므로 arr[10][10]을 선언.

arr[0][0]은 1을 넣어주어 시작.

 

파스칼의 삼각형을 10단계가지 채워둔 후 원하는 단계만큼 출력해주면 시간을 줄일 수 있다.

이중 for문을 이용.

i = 단계, j = 각 단계에서의 위치를 나타낸다.

만약 j == 0 또는 j == i랑 같다면 각 단계에서 양 끝을 나타내므로 arr[i][j]에 1을 대입.

그 외에는 arr[i - 1][j - 1] + arr[i - 1][j]를 넣어주어 채워나가면 된다.

#include <iostream>

using namespace std;

int main(void)
{
    int t;
    int arr[10][10];
    arr[0][0] = 1;
    
    cin >> t;
    
    for(int i = 1; i < 10; i++)
    {
        for(int j = 0; j <= i; j++)
        {
            if(j == 0 || j == i)
                arr[i][j] = 1;
            else
                arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
        }
    }
    
    for(int i = 1; i < t; i++)
    {
        int n;
        cin >> n;
        
        cout << "#" << i << endl;
        for(int j = 0; j < n; j++)
        {
            for(int k = 0; k <= j; k++)
                cout << arr[j][k] << " ";
            cout << endl;
        }
    }
    return 0;
}
728x90
반응형