반응형

문제 링크: https://www.acmicpc.net/problem/15489

 

15489번: 파스칼 삼각형

첫째 줄에 양의 정수 R, C, W가 공백을 한 칸씩 두고 차례로 주어진다. (단, 2 ≤ R+W ≤ 30, 2 ≤ C+W ≤ 30, 1 ≤ W ≤ 29, C ≤ R)

www.acmicpc.net

<문제 풀이> 다이나믹 프로그래밍(DP), 수학

 

 

파스칼 삼각형을 아래 그림과 같이 왼쪽으로 정렬된 형태로 생각하면 2차원 배열로 쉽게 표현할 수 있습니다.

그러면 맨 왼쪽을 모두 1로 채운 뒤 ㄱ자 모양으로 파스칼 삼각형 DP 배열을 채우면 됩니다.

 

 

 

 

<C++소스코드>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include<iostream>
#include<functional>
#include<algorithm>
using namespace std;
 
int R, C, W;
 
int dp[32][32];
 
int main() {
    ios_base::sync_with_stdio(false);
 
    cin >> R >> C >> W;
 
    for (int i = 1; i <= 31; i++) {
        dp[i][1= 1;
    }
 
    for (int i = 1; i <= 29; i++) {
        for (int j = 1; j <= 29; j++) {
            dp[i + 1][j + 1= dp[i][j] + dp[i][j + 1];
        }
    }
 
    int ans = 0;
 
    for (int i = 0; i < W; i++) {
        for (int j = 0; j <= i; j++) {
            ans += dp[R + i][C + j];
        }
    }
 
    cout << ans;
 
    return 0;
}
cs
반응형

'알고리즘 문제풀이 > 백준' 카테고리의 다른 글

[백준 20115번] 에너지 드링크  (0) 2023.04.22
[백준 1343번] 폴리오미노  (0) 2023.04.22
[백준 16953번] A -> B  (0) 2023.04.21
[백준 11508번] 2 + 1 세일  (0) 2023.04.20
[백준 1890번] 점프  (0) 2023.04.19

+ Recent posts