반응형

1. 문제

파스칼 삼각형은 아래와 같은 모양으로 이루어져 있다. 양 끝을 제외한 각 수는 자신의 바로 왼쪽 위의 수와 바로 오른쪽 위의 수의 합으로 되어있다.

이때 R번째 줄, C번째 수를 위 꼭짓점으로 하는 한 변이 포함하는 수의 개수가 W인 정삼각형과 그 내부를 생각하자. 정삼각형의 변과 그 내부에 있는 수들의 합을 구하고 싶다. 예를 들면, 3번 째 줄, 1번 째 수를 꼭짓점으로 하고 한 변이 포함하는 수의 개수가 4인 정삼각형과 그 내부에 있는 수의 합은 1+(1+3)+(1+4+6)+(1+5+10+10) = 42 이다.

주어진 R, C, W에 대해서 그에 해당하는 합을 구하는 프로그램을 작성하여라.

 

2. 입력

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

 

3 1 4

 

3. 출력

 

첫째 줄에 R번째 줄, C번째 수를 위 꼭짓점으로 하는 한 변이 포함하는 수의 개수가 W인 정삼각형과 그 내부에 있는 수들의 합을 출력한다.

 

42

 

4. 코드

import sys

input = sys.stdin.readline
r, c, w = map(int, input().split())
n = r + w - 1
result = 0
graph = [[0] * n for _ in range(n)]
# 그래프 양쪽에 1 set
for i in range(0, n):
  graph[i][0] = 1
  graph[i][i] = 1
# wjaghktlr
for a in range(2, n):
  for b in range(1, a):
    graph[a][b] = graph[a - 1][b - 1] + graph[a - 1][b]
z = 0
for x in range(r - 1, n):
  z += 1
  for y in range(c - 1, c - 1 + z):
    result += graph[x][y]

print(result)

 

5. 풀이설명

반응형

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

DP(2×n 타일링/S3) - 11726  (0) 2023.03.01
DP(피자/S4) - 14606  (0) 2023.02.27
DP(최대 상승/S5) - 25644  (0) 2023.02.26
DP(거스름돈/S5) - 14916  (0) 2023.02.26
DP(피보나치 수 2/B1) - 2748  (0) 2023.02.25

+ Recent posts