120. Triangle

알고리즘 문제풀기 · 2020. 1. 28. 20:30

https://leetcode.com/problems/triangle/

 

Triangle - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

dp문제

 

삼각형 밑에까지 가면서 가장 최소가 되는 길의 값을 리턴하는 문제

 

triangle과 같은 구조의 dp 배열을 생성하고 

 

현재시점에서 경로값을 누적해서 최소값을 dp값으로 주면 풀수 있음.

 

class Solution(object):
    def minimumTotal(self, triangle):
        """
        :type triangle: List[List[int]]
        :rtype: int
        """
        
        dp = [ [ 0 for m in range(len(triangle[j]))] for j in range(len(triangle))]
        
        dp[0][0] = triangle[0][0]
        
        
        
        for r in range(1, len(triangle),1):
            
            for c in range(len(triangle[r])):
                
                if c == 0:
                    dp[r][c] = dp[r-1][c] + triangle[r][c]
                elif c == len(triangle[r])-1:
                    dp[r][c] = dp[r-1][c-1] + triangle[r][c]
                else:
                    dp[r][c] = min(triangle[r][c]+dp[r-1][c-1], triangle[r][c]+dp[r-1][c])
        
        return min(dp[-1])
        
        

'알고리즘 문제풀기' 카테고리의 다른 글

221. Maximal Square  (0) 2020.02.04
1208. Get Equal Substrings Within Budget  (0) 2020.01.29
39. Combination Sum  (0) 2020.01.28
950. Reveal Cards In Increasing Order  (0) 2020.01.26
1277. Count Square Submatrices with All Ones  (0) 2020.01.25