본문 바로가기
C/SWEA

[SWEA] #2005. 파스칼의 삼각형

by 단월໒꒱ 2021. 11. 28.

Difficulty 2

 

[문제]

 

 

 

[코드 및 결과]

 

 

 

#include <stdio.h>

int main(int argc, char** argv) {
    int T, N, arr[10][10];
    scanf("%d", &T);
    
    for (int t = 1; t <= T; t++) {
        printf("#%d\n", t);
        
        scanf("%d", &N);
        for (int i = 0; i < N; i++) {
            for (int j = 0; j < i+1; 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 = 0; i < N; i++) {
            for (int j = 0; j < i+1; j++) {
                printf("%d ", arr[i][j]);
                if (j == i)
                    printf("\n");
            }
        }
    }
    return 0;
}

 

 

 

 

[설명]

테스트케이스 T, 입력받을 숫자 N, 2차원 배열 arr을 int형으로 선언한다.

scanf 함수로 테스트케이스 T를 입력받고 숫자 N도 입력 받는다.

파스칼의 삼각형은 위의 그림처럼 전개되는데, 양 끝은 값이 1로 고정되고 아닌 부분은 nCi = (n-1)C(i-1) + (n-1)Ci 값이 저장된다.

위의 내용을 입력하기 위해서 반복문을 통해 i와 j를 써서 j가 0이거나 i와 같을경우, 즉 양 끝값일 경우는 배열에 1을 저장하고, 아닌 경우는 위에 써놓은 식대로 배열의 값을 저장한다.

위의 과정을 통해 파스칼의 삼각형을 작성했으면 다시 반복문을 통해 배열에 입력된 값을 출력해주는데, 이때 j와 i가 같을 경우, 즉 맨 끝까지 왔을 경우에는 줄바꿈을 하도록 해준다.

 

 

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=2&contestProbId=AV5P0-h6Ak4DFAUq&categoryId=AV5P0-h6Ak4DFAUq&categoryType=CODE&problemTitle=&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=2&pageSize=10&pageIndex=1 

 

SW Expert Academy

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

swexpertacademy.com

 

 

 

'C > SWEA' 카테고리의 다른 글

[SWEA] #1959. 두 개의 숫자열  (0) 2021.11.28
[SWEA] #1946. 간단한 압축 풀기  (0) 2021.11.19
[SWEA] #1926. 간단한 369게임  (0) 2021.11.19
[SWEA] #1984. 중간 평균값 구하기  (0) 2021.11.14
[SWEA] #2056. 연월일 달력  (0) 2021.11.14

댓글