본문 바로가기
PS 문제 풀이/Jungol

[Jungol] 정올 2071 파스칼 삼각형

by 까망 하르방 2021. 3. 17.
반응형

출처: http://jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=1335&sca=2020

Approach

종류 1과 같이 배열에 저장을 한 후 m의 값에 따라 출력을 바꾸면 된다.

종류 2의 경우는 배열의 아래쪽부터 출력을 하면 된다.

종류 3의 경우는 각 위치에 출력되는 배열의 번호를 적어놓고 생각해 보자.

 

종류 1

각 줄의 첫번째와 마지막 숫자 = 1입니다

3번째 줄 부터는 가운데 영역은 

▶ map[i][j] = map[i - 1][j - 1] + map[i - 1][j];와 같이 구현할 수 있습니다.

 

정류 2

종류 1을 구현한다면 종류 2는 마지막 행부터 출력할 수 있습니다.

이때, 앞쪽에 공백 표시에 유의

 

종류 3

아래와 같이 "종류 1"의 배열 정보를 읽어오면 출력할 수 있습니다.

 


#include <stdio.h>
 
const int MAX_N = 30  + 5;
int map[MAX_N][MAX_N];
int N, M;
int main() {
    // freopen("input.txt", "r", stdin);
 
    scanf("%d %d", &N, &M);
    map[0][0] = 1;
    for (int i = 1; i < N; ++i) {
        for (int j = 0; j <= i; ++j) {
            if (j == 0 || j == i) map[i][j] = 1;
            else map[i][j] = map[i - 1][j - 1] + map[i - 1][j];
        }
    }
 
    if (M == 1) {
        for (int i = 0; i < N; ++i) {
            for (int j = 0; j <= i; ++j) {
                printf("%d ", map[i][j]);
            }
            printf("\n");
        }
    }
    else if (M == 2) {
        for (int i = N-1; i >= 0; --i) {
            // 앞쪽에 공백 출력
            for (int t = N - 1; t > i; --t) {
                printf(" ");
            }
            // 삼각형 숫자 출력
            for (int j = 0; j <= i; ++j) {
                printf("%d ", map[i][j]);
            }
            printf("\n");
        }
    }
    else { // M == 3
        for (int j = N - 1; j >= 0; --j) {
            for (int i = N - 1; i >= j; --i) {
                printf("%d ", map[i][j]);
            }
            printf("\n");
        }
        
    }
}

 

반응형

'PS 문제 풀이 > Jungol' 카테고리의 다른 글

[Jungol] 정올 1692 곱셈  (0) 2021.03.17
[Jungol] 정올 1097 앞뒤 같은 제곱  (0) 2021.03.17
[Jungol] 정올 2538 PATRIK  (0) 2021.03.17
[Jungol] 정올 1328 빌딩  (0) 2021.03.17
[Jungol] 정올 3123 키로거(Keylogger)  (0) 2021.03.17

댓글