본문으로 바로가기
문제

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

소스코드
#include <bits/stdc++.h>
using namespace std;
int dp[31][31];
int main() {
	ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
	int r,c,w,ans=0;
	cin >> r >> c >> w;
	int row = r + w - 1;
	dp[1][1] = 1, dp[2][1] = 1, dp[2][2] = 1;
	for (int i = 3; i <= row; i++) {
		for (int j = 1; j <= i; j++) {
			if (j == 1 || j == i) dp[i][j] = 1;
			else {
				dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j];
			}
		}
	}
	int flag = c;
	for (int i = r; i <= row; i++) {
		for (int j = c; j <= flag; j++) {
			ans += dp[i][j];
		}
		flag++;
	}
	cout << ans;
}
풀이

파스칼의 삼격형 문제 2탄입니다.

1탄과 마찬가지인 로직인데, 다만 새로운 꼭지점이 생긴것 부터 또다시 파스칼 삼각형을 이루는 값들의 합을 구하는 것이다.