아기깨비
아기깨비의 코딩방망이
아기깨비
전체 방문자
오늘
어제
  • 전체보기 (170)
    • Today I Learned (TIL) (0)
      • CS (0)
      • Python (0)
    • Algorithm (170)
      • BAEKJOON (168)
      • Programmers (1)
      • SW Expert Academy (1)
    • Experience (0)
      • 삼성 청년 SW 아카데미 (2022) (0)
      • 혁신성장 청년인재 집중양성 (2019) (0)

인기 글

최근 글

hELLO · Designed By 정상우.
아기깨비

아기깨비의 코딩방망이

[백준 / Python 파이썬] 15489번 - 파스칼 삼각형
Algorithm/BAEKJOON

[백준 / Python 파이썬] 15489번 - 파스칼 삼각형

2023. 5. 27. 00:19

[Silver IV] 파스칼 삼각형 - 15489


문제 링크

분류

조합론, 다이나믹 프로그래밍, 수학

문제 설명

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

이때 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인 정삼각형과 그 내부에 있는 수들의 합을 출력한다.


R, C, W = map(int, input().split())

pascal = [[], [1], [1, 1]]
for i in range(3, R + W):
    answer = [1]
    for j in range(1, i - 1):
        temp = pascal[i - 1][j - 1] + pascal[i - 1][j]
        answer.append(temp)
    answer.append(1)
    pascal.append(answer)

result = 0
k = 1
for r in range(R, R + W):
    for c in range(k):
        result += pascal[r][C - 1 + c]
    k += 1

print(result)

'Algorithm > BAEKJOON' 카테고리의 다른 글

[백준 / Python 파이썬] 15565번 - 귀여운 라이언  (0) 2023.06.13
[백준 / Python 파이썬] 2670번 - 연속부분최대곱  (0) 2023.05.27
[백준 / Python 파이썬] 13699번 - 점화식  (0) 2023.05.27
[백준 / Python 파이썬] 25601번 - 자바의 형변환  (0) 2023.05.19
[백준 / Python 파이썬] 2257번 - 화학식량  (0) 2023.05.19
    'Algorithm/BAEKJOON' 카테고리의 다른 글
    • [백준 / Python 파이썬] 15565번 - 귀여운 라이언
    • [백준 / Python 파이썬] 2670번 - 연속부분최대곱
    • [백준 / Python 파이썬] 13699번 - 점화식
    • [백준 / Python 파이썬] 25601번 - 자바의 형변환
    아기깨비
    아기깨비
    아기깨비가 공부하는 일상을 기록하는 블로그 입니다.

    티스토리툴바