728x90
반응형
파스칼 삼각형 + DP
- 제목
Final Price
- 조건
시간 제한 : 1 초
메모리 제한 : 512MB
- 문제
파스칼 삼각형은 아래와 같은 모양으로 이루어져 있다. 양 끝을 제외한 각 수는 자신의 바로 왼쪽 위의 수와 바로 오른쪽 위의 수의 합으로 되어있다.
이때 R번째 줄, C번째 수를 위 꼭짓점으로 하는 한 변이 포함하는 수의 개수가 W인 정삼각형과 그 내부를 생각하자. 정삼각형의 변과 그 내부에 있는 수들의 합을 구하고 싶다. 예를 들면, 3번 째 줄, 1번 째 수를 꼭짓점으로 하고 한 변이 포함하는 수의 개수가 4인 정삼각형과 그 내부에 있는 수의 합은 1+(1+3)+(1+4+6)+(1+5+10+10) = 42 이다.
주어진 R, C, W에 대해서 그에 해당하는 합을 구하는 프로그램을 작성하여라.
- 입력
첫째 줄에 양의 정수 R, C, W가 공백을 한 칸씩 두고 차례로 주어진다. (단, 2 ≤ R+W ≤ 30, 2 ≤ C+W ≤ 30, 1 ≤ W ≤ 29, C ≤ R)
- 출력
첫째 줄에 R번째 줄, C번째 수를 위 꼭짓점으로 하는 한 변이 포함하는 수의 개수가 W인 정삼각형과 그 내부에 있는 수들의 합을 출력한다.
예제 입력1 | 예제 출력1 |
3 1 4 | 42 |
R, C, W = map(int, input().split())
dp = [[0 for i in range(30 + 1)] for j in range(30 + 1)]
for i in range(30 + 1):
for j in range(30 + 1):
if j == 0 or i == j:
dp[i][j] = 1
else:
dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j]
nsum = 0
cr = R - 1
cc = C - 1
for i in range(W):
for j in range(i + 1):
nsum += dp[cr + i][cc + j]
print(nsum)
728x90
반응형
'Problem Solving > BaekJoon' 카테고리의 다른 글
[BOJ/백준] 14426 - 접두사 찾기 (0) | 2023.07.19 |
---|---|
[BOJ/백준] 28281 - 선물 (0) | 2023.07.19 |
[BOJ/백준] 28224 - Final Price (0) | 2023.07.19 |
[BOJ/백준] 2206 - 벽 부수고 이동하기 (0) | 2023.07.19 |
[BOJ/백준] 1253 - 좋다 (0) | 2023.07.19 |