π€λ¬Έμ ν΄κ²°
G5 | dp, μ‘°ν©λ‘
DPλ μμ μμΌλ‘ ν΄μΌ μ λ§μ΄λ€.
μμμ 20, 2λ λ무 ν¬κΈ° λλ¬Έμ 6, 4λ‘ λ°κΏμ ꡬν΄λ΄€λ€.
μ΄μ N νμ Kμ΄λ€.
μ¦ 2μ΄ 3νμ 2λ₯Ό μ«μ 3κ°λ‘ λ§λλ λ°©λ²μ κ°μ§μλ€.
λ± λ³΄λ©΄ κ·μΉμ΄ λ³΄μΌ κ²μ΄λ€. i, j λ i-1,j μ i,j-1μ ν©μ΄λΌλ κ²μ...
μλμ κ·μΉμ κ²½μ°μ μλ₯Ό λͺ¨λ μ§μ ꡬν΄λ³΄λ©΄ 3μ΄4νμ ꡬν λλ 3νμ 0~4μ΄κΉμ§μ μ«μλ₯Ό λν κ°μ΄λ€.
κ·Έ μ΄μ λ
- 0μ μ«μ 2κ°λ‘: (0,0)
- 1μ μ«μ 2κ°λ‘: (0,1), (1,0)
- 2λ₯Ό μ«μ 2κ°λ‘: (0,2), (1,1), (2,0)
κ°κ°μ κ²½μ°μ μ λ€μ 2, 1, 0 μ λΆμ¬μ£Όλ©΄ μ«μ 2λ₯Ό 3κ°λ‘ ꡬμ±νλ κ²½μ°μ μλ 6μ΄ λμ¨λ€.
π¨
π»μμ€ μ½λ
N, K = map(int, input().split())
dp = [[0] * (N + 1) for _ in range(K + 1)]
for i in range(1, K + 1):
for j in range(N + 1):
if j == 0:
dp[i][j] = 1
else:
dp[i][j] = (dp[i - 1][j] + dp[i][j - 1]) % 1000000000
for row in dp:
print(row)
print()
print(dp[-1][-1])
πλ¬Έμ νμΈ
μΆμ²: BACKJOON ONLINE JUDGE
λ§ν¬: https://www.acmicpc.net/problem/2225
λ¬Έμ
0λΆν° NκΉμ§μ μ μ Kκ°λ₯Ό λν΄μ κ·Έ ν©μ΄ Nμ΄ λλ κ²½μ°μ μλ₯Ό ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
λ§μ μ μμκ° λ°λ κ²½μ°λ λ€λ₯Έ κ²½μ°λ‘ μΌλ€(1+2μ 2+1μ μλ‘ λ€λ₯Έ κ²½μ°). λν ν κ°μ μλ₯Ό μ¬λ¬ λ² μΈ μλ μλ€.
μ λ ₯
첫째 μ€μ λ μ μ N(1 ≤ N ≤ 200), K(1 ≤ K ≤ 200)κ° μ£Όμ΄μ§λ€.
μΆλ ₯
첫째 μ€μ λ΅μ 1,000,000,000μΌλ‘ λλ λλ¨Έμ§λ₯Ό μΆλ ₯νλ€.
'Algorithm Problem > Python' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[python] λ°±μ€ - 3055. νμΆ (0) | 2020.09.23 |
---|---|
[python] λ°±μ€ - 1916. μ΅μλΉμ© ꡬνκΈ° (0) | 2020.09.23 |
[python] λ°±μ€ - 9251. LCS (0) | 2020.09.22 |
[python] λ°±μ€ - 11497. ν΅λ무 (0) | 2020.09.21 |
[python] λ°±μ€ - 2410. 2μ λ©±μμ ν© (0) | 2020.09.21 |