ν‹°μŠ€ν† λ¦¬ λ·°

728x90
λ°˜μ‘ν˜•

문제

 

1932번: μ •μˆ˜ μ‚Όκ°ν˜•

문제 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 μœ„ 그림은 크기가 5인 μ •μˆ˜ μ‚Όκ°ν˜•μ˜ ν•œ λͺ¨μŠ΅μ΄λ‹€. 맨 μœ„μΈ΅ 7λΆ€ν„° μ‹œμž‘ν•΄μ„œ μ•„λž˜μ— μžˆλŠ” 수 쀑 ν•˜λ‚˜λ₯Ό μ„ νƒν•˜μ—¬ μ•„λž˜μΈ΅μœΌλ‘œ λ‚΄λ €μ˜¬ λ•Œ, μ΄μ œκΉŒμ§€ μ„ νƒλœ 수의 합이 졜�

www.acmicpc.net

 

문제 풀이

 μ‚Όκ°ν˜•μ˜ νŠΉμ„±μ„ μ΄ν•΄ν•˜λ©΄ μ‰½κ²Œ ν’€ 수 μžˆλŠ” λ¬Έμ œμ΄λ‹€. μ‚Όκ°ν˜• 쒌/우츑 변에 μžˆλŠ” 값듀은 μœ„μ˜ κ°’ 쀑 ν•˜λ‚˜μ˜ κ°’λ§Œ λ”ν•˜λ©΄ λ˜μ§€λ§Œ 각 끝 변이 μ•„λ‹Œ κ²½μš°λŠ” 2개의 값을 λ°›κ²Œ λœλ‹€. λ”°λΌμ„œ 쒌/우츑 변을 μ œμ™Έν•˜κ³  λ‚˜λ¨Έμ§€λŠ” κ°€μž₯ 큰 값을 λˆ„μ ν•΄μ£Όλ©΄ 문제λ₯Ό ν’€ 수 μžˆλ‹€.

 

μ½”λ“œ

from sys import stdin

if __name__ == '__main__':
    n = int(stdin.readline())
    triangle =\
        [list(map(int, stdin.readline().split())) for _ in range(n)]

    for i in range(1, n):
        for j in range(i + 1):
            # κ°€μž₯ 쒌츑인 경우
            if not j:
                triangle[i][j] += triangle[i - 1][j]
            # κ°€μž₯ 우츑인 경우
            elif j == i:
                triangle[i][j] += triangle[i - 1][j - 1]
            # 쀑간에 μœ„μ— 2개의 값을 λΉ„κ΅ν•˜μ—¬μ•Ό ν•˜λŠ” 경우
            else:
                triangle[i][j] += \
                    max(triangle[i - 1][j], triangle[i - 1][j - 1])

    print(max(triangle[n - 1]))

 

 

728x90
λ°˜μ‘ν˜•
λŒ“κΈ€
κΈ€ 보관함
μ΅œκ·Όμ— 올라온 κΈ€
μ΅œκ·Όμ— 달린 λŒ“κΈ€