업데이트:

최대 1 분 소요

문제

https://www.acmicpc.net/problem/15489

15489.png

풀이

문제의 입력 제한은 총 30행 까지다. 따라서 dp테이블을 1행부터 30행까지 정의한다.
dp테이블에 문제에서 정의한 규칙에 따라 파스칼 삼각형을 그려준다.
이제 파스칼 삼각형 안에서 r(행), c(열), w(범위)에 맞춰 탐색을 통해 총합을 구해주면 된다.

r,c,w = map(int, input().split())

dp = [[1]*i for i in range(1,32)]

for i in range(2,31):
    for j in range(1,len(dp[i])-1):
        dp[i][j] = dp[i-1][j-1]+dp[i-1][j]
sum = 0
for i in range(r-1, r+w-1):
    for j in range((c-1), c+(i-r)+1):
        sum += dp[i][j]

print(sum)

생각 & 정리

문제를 잘 풀지 못해도 계속 풀다 보면 뭔가 보이겠지 라는 심정으로 올라갔던 실버2~3 문제만 풀었다.
계속 보고 봐도 해결방안은 잘 떠오르지도 않고 내가 dp를 전혀 이해하지 못하지 않았을까 하는 생각에
난이도를 낮추어 도전해보니 이제서야 좀 풀만한 문제가 나왔다는 생각이 들었다.
잘 안풀리면 내려가고, 잘 풀리면 올라가고. 너무 자격지심이나 자만심 없이, 부담없이 그냥 보이고 풀릴 때 까지 있을 생각이다.

태그:

카테고리:

업데이트:

댓글남기기