728x90
반응형
https://www.acmicpc.net/problem/4811
문제 해결
- DP를 이용해야하는 문제라는 것은 쉽게 알 수 있다.
- 그런데 DP를 어떻게 활용할지는 생각보다 어렵다.
- 힌트는 알약이 $n$개가 있으면 H가 $n$번 W가 $n$번 써진다는 사실이다.
- 그래서 dp[i][j]를 H가 $i$번, W가 $j$번 썼다는 것으로 정의한다.
- j가 1~n일 때 dp[0][j]는 1이다.
- 그리고 dp[i][j] += dp[i-1][j] + dp[i][j-1]이다.
CODE
import sys
input = sys.stdin.readline
def DP(n):
dp = [[0 for _ in range(n+1)] for _ in range(n+1)]
for i in range(1,n+1):
dp[0][i] = 1
for i in range(1,n+1):
for j in range(i, n+1):
dp[i][j] += dp[i-1][j] + dp[i][j-1]
return dp[n][n]
if __name__ == "__main__":
while True:
n = int(input())
if n==0:break
ans = DP(n)
print(ans)
728x90
반응형
'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글
python] 백준 1743 음식물 피하기 (0) | 2024.06.14 |
---|---|
[python] 백준 11438 LCA 2 (0) | 2024.06.06 |
[python] 백준 16565 N 포커 (1) | 2024.05.23 |
[python] 20188 등산 마니아 (0) | 2024.05.22 |
[python] 백준 2150 Strongly Connected Component (0) | 2024.05.09 |
댓글