π 곡λΆνλ μ§μ§μνμΉ΄λ μ²μμ΄μ§?
[v.λμ κ³νλ² 1-μ λλ ν¨μ μ€ν-9184]BAEKJOON_Python λ³Έλ¬Έ
π¦₯ μ½ν
/BAEKJOON
[v.λμ κ³νλ² 1-μ λλ ν¨μ μ€ν-9184]BAEKJOON_Python
μ§μ§μνμΉ΄ 2022. 1. 27. 15:17728x90
λ°μν
220127 μμ±
<λ³Έ λΈλ‘κ·Έλ BAEKJOON μ μ°Έκ³ ν΄μ μ λ§μ νμ΄λ₯Ό μμ±νμμ΅λλ€>
9184
μ λ ₯μΌλ‘ μ£Όμ΄μ§ κ°κ°μ a, b, cμ λν΄μ, w(a, b, c)λ₯Ό μΆλ ₯
λ€μκ³Ό κ°μ μ¬κ·ν¨μ w(a, b, c)κ° μλ€.
if a <= 0 or b <= 0 or c <= 0, then w(a, b, c) returns:
1
if a > 20 or b > 20 or c > 20, then w(a, b, c) returns:
w(20, 20, 20)
if a < b and b < c, then w(a, b, c) returns:
w(a, b, c-1) + w(a, b-1, c-1) - w(a, b-1, c)
otherwise it returns:
w(a-1, b, c) + w(a-1, b-1, c) + w(a-1, b, c-1) - w(a-1, b-1, c-1)
λ΄ νμ΄
import sys
input = sys.stdin.readline
def w(a, b, c):
if a <= 0 or b <= 0 or c <= 0:
return 1
elif a > 20 or b > 20 or c > 20:
return w(20, 20, 20)
if dp[a][b][c] :
return dp[a][b][c]
if a<b<c :
dp[a][b][c] = w(a,b,c-1) + w(a,b-1,c-1) - w(a,b-1,c)
else:
dp[a][b][c] = w(a-1,b,c) + w(a-1,b-1,c) + w(a-1,b,c-1) - w(a-1,b-1,c-1)
return dp[a][b][c]
dp = [[[0 for _ in range(21)] for _ in range (21)] for _ in range (21)]
while True:
a,b,c = map(int, input().split())
if a==-1 and b==-1 and c==-1:
break
print("w({}, {}, {}) = {}".format(a,b,c,w(a,b,c)))
2 2 2
w(2, 2, 2) = 4
10 4 6
w(10, 4, 6) = 523
μ°Έκ³ νμ©λλΉ,,
μ λ΄κΊΌλ νμμλ¬ λ¨μ§..?
λ°±μ€ 9184λ² μ λλ ν¨μ μ€ν (Python)
λ¬Έμ μ μ νμκΉμ§ μ°μ¬μμ΄μ λΉν©μ€λ¬μ λ€.. λ무λλ λΉμ°νκ² λ¬Έμ μ μ°μ¬μ Έμλλλ‘ μ½λλ₯Ό μμ±νλ©΄ μλλ€! μ¬κ·ν¨μλ₯Ό μ¬μ©ν΄μΌν λ μ΄κ²μ λ©λͺ¨μ΄μ μ΄μ νλ λ°©λ²μ 묻λ λ¬Έμ μ΄λ€
seraup.dev
728x90
λ°μν
'π¦₯ μ½ν > BAEKJOON' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BAEKJOON python] 2178_λ―Έλ‘νμ (0) | 2022.10.06 |
---|---|
[BAEKJOON python] 1260_DFSμ BFS (0) | 2022.10.06 |
[v.λμ κ³νλ² 1-νΌλ³΄λμΉ ν¨μ-1003]BAEKJOON_Python (0) | 2022.01.27 |
[v.λ°±νΈλνΉ-μ€ννΈμ λ§ν¬-14889]BAEKJOON_Python (0) | 2022.01.27 |
[v.λ°±νΈλνΉ-μ°μ°μ λΌμλ£κΈ°-14888]BAEKJOON_Python (0) | 2022.01.27 |
Comments