[Python] 백준 1932번: 정수 삼각형

https://www.acmicpc.net/problem/1932
풀이
1부터 n번째 줄까지 정삼각형 형태의 배열이므로 j의 범위를 i+1로 해서 순회
한줄씩 내려오면서 이전값과 현재값을 더했을 때의 최대값을 선택하면서 내려오면 된다.
이전 값은 현재값을 기준으로 바로 위에서 내려올 경우와 왼쪽 위에서 내려올 경우를 생각할 수 있다.
바로 위에서 내려올 경우는 i==j 라고 할 수 있고, 이 경우 오른쪽에서 내려올 수 있는 숫자가 없으므로 right=0이 된다.
왼쪽 위에서 내려올 경우는 j==0 라고 할 수 있고, 이 경우 왼쪽에서 내려올 수 있는 숫자가 없으므로 left=0이 된다.
코드
import sys
input = sys.stdin.readline
n=int(input())
maps = [list(map(int,input().split())) for _ in range(n)]
for i in range(1, n):
    for j in range(i+1):
        # 왼쪽 위에서 내려오는 경우
        if j==0:
            left = 0
        else:
            left = maps[i-1][j-1]
        # 바로 위에서 내려오는 경우
        if i==j:
            right = 0
        else:
            right = maps[i-1][j]
        maps[i][j] = maps[i][j] + max(right, left)
print(max(maps[-1]))
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Author And Source
                            
                            이 문제에 관하여([Python] 백준 1932번: 정수 삼각형), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
                                
                                https://velog.io/@joniekwon/Python-백준-1932번-정수-삼각형
                            
                            
                            
                                저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
                            
                            
                                
                                
                                 우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            
import sys
input = sys.stdin.readline
n=int(input())
maps = [list(map(int,input().split())) for _ in range(n)]
for i in range(1, n):
    for j in range(i+1):
        # 왼쪽 위에서 내려오는 경우
        if j==0:
            left = 0
        else:
            left = maps[i-1][j-1]
        # 바로 위에서 내려오는 경우
        if i==j:
            right = 0
        else:
            right = maps[i-1][j]
        maps[i][j] = maps[i][j] + max(right, left)
print(max(maps[-1]))Author And Source
이 문제에 관하여([Python] 백준 1932번: 정수 삼각형), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@joniekwon/Python-백준-1932번-정수-삼각형저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)