[λ°±μ€/python] 1932λ² : μ μ μΌκ°ν
λ¬Έμ
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
μ κ·Έλ¦Όμ ν¬κΈ°κ° 5μΈ μ μ μΌκ°νμ ν λͺ¨μ΅μ΄λ€.
맨 μμΈ΅ 7λΆν° μμν΄μ μλμ μλ μ μ€ νλλ₯Ό μ ννμ¬ μλμΈ΅μΌλ‘ λ΄λ €μ¬ λ, μ΄μ κΉμ§ μ νλ μμ ν©μ΄ μ΅λκ° λλ κ²½λ‘λ₯Ό ꡬνλ νλ‘κ·Έλ¨μ μμ±νλΌ. μλμΈ΅μ μλ μλ νμ¬ μΈ΅μμ μ νλ μμ λκ°μ μΌμͺ½ λλ λκ°μ μ€λ₯Έμͺ½μ μλ κ² μ€μμλ§ μ νν μ μλ€.
μΌκ°νμ ν¬κΈ°λ 1 μ΄μ 500 μ΄νμ΄λ€. μΌκ°νμ μ΄λ£¨κ³ μλ κ° μλ λͺ¨λ μ μμ΄λ©°, λ²μλ 0 μ΄μ 9999 μ΄νμ΄λ€.
μ λ ₯
첫째 μ€μ μΌκ°νμ ν¬κΈ° n(1 ≤ n ≤ 500)μ΄ μ£Όμ΄μ§κ³ , λμ§Έ μ€λΆν° n+1λ²μ§Έ μ€κΉμ§ μ μ μΌκ°νμ΄ μ£Όμ΄μ§λ€.
μΆλ ₯
첫째 μ€μ ν©μ΄ μ΅λκ° λλ κ²½λ‘μ μλ μμ ν©μ μΆλ ₯νλ€.
μ λ΅
import sys
n = int(sys.stdin.readline())
number = []
for i in range(n):
number.append(list(map(int, sys.stdin.readline().split())))
for i in range(1, n):
for j in range(i + 1):
if j == 0:
number[i][0] += number[i - 1][0]
elif j == i:
number[i][j] += number[i-1][j-1]
else:
number[i][j] += max(number[i - 1][j - 1], number[i - 1][j])
answer = 0
for k in range(n):
if answer < number[n - 1][k]:
answer = number[n - 1][k]
print(answer)
μλλ‘ λ΄λ €μ€λ©΄μ νμ¬ μμΉμ μλ₯Ό μΈμ ν μμ μ«μλ€ μ€ ν° κ°κ³Ό λν κ°μΌλ‘ λ체νλ€.
맨 λ§μ§λ§ μ€κΉμ§ λ΄λ €μ€λ©΄ λ§μ§λ§ μ€μ μλ μ μ€ κ°μ₯ ν° κ°μ μΆλ ₯νλ€.
μλ₯Ό λ€μ΄ νμ¬ μμΉκ° λλ²μ§Έ μ€μ μμ κ²½μ°,
μΈμ ν 7μ λν κ°μΈ 10κ³Ό 15λ‘ λ체νλ€.
νμ¬ μμΉκ° μΈλ²μ§Έ μ€μ 2λ²μ§Έ κ°μΈ 1μ μμ κ²½μ°,
μΈμ ν 10κ³Ό 15 μ€ 15κ° λ ν¬κΈ°λλ¬Έμ 15λ₯Ό λν κ°μΈ 16μΌλ‘ λ체νλ€.
if j == 0:
number[i][0] += number[i - 1][0]
elif j == i:
number[i][j] += number[i-1][j-1]
else:
number[i][j] += max(number[i - 1][j - 1], number[i - 1][j])
λ°λ³΅λ¬Έμ μννλ©΄μ νμ¬ μμΉμ μ number[i][j]κ° λ§¨ μμ΄λ 맨 λ€μ μμ κ²½μ°,
μΈμ ν μμ μ«μκ° νλλ°μ μμΌλ―λ‘ μ£Όμν΄μΌνλ€.
'πμκ³ λ¦¬μ¦ > λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€/python] 1149λ² : RGB 거리 (0) | 2021.03.30 |
---|---|
[λ°±μ€/python] 11047λ² : λμ 0 (0) | 2021.03.30 |
[λ°±μ€/python] 10773λ² : μ λ‘ (0) | 2021.03.29 |
[λ°±μ€/python] 10828λ² : μ€ν (0) | 2021.03.29 |
[λ°±μ€/python] 1010λ² : λ€λ¦¬ λκΈ° (0) | 2021.03.28 |