[λ°±μ€€/python] 1932번 : μ •μˆ˜ μ‚Όκ°ν˜•

2021. 3. 29. 23:07

문제

        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]κ°€ 맨 μ•žμ΄λ‚˜ 맨 뒀에 μžˆμ„ 경우,

μΈμ ‘ν•œ μœ„μ˜ μˆ«μžκ°€ ν•˜λ‚˜λ°–μ— μ—†μœΌλ―€λ‘œ μ£Όμ˜ν•΄μ•Όν•œλ‹€.

BELATED ARTICLES

more