상세 컨텐츠

본문 제목

다이나믹 프로그래밍(Min Sum Path)

카테고리 없음

by 성댕쓰 2021. 7. 5. 23:27

본문

문제: 2d array로 길을 가기 위한 비용이 주어진다. 왼쪽 위에서 오른쪽 아래까지 도달하기 위한 최소 비용은 얼마인가?

 

이전 문제와 다른 점은 2d 라는 것 뿐이다.

다이나믹 프로그래밍(계단 오르기) (tistory.com)

 

다이나믹 프로그래밍(계단 오르기)

문제: n개의 계단을 오르고자 한다. 한번에 1개, 2개씩의 계단을 오를수 있을때 총 몇가지 방벙으로 계단을 오를 수 있는가? 피보나치 수열 문제와 똑같다. 시작 지점만 다름. 다이나믹 프로그래

dockdocklife.tistory.com

from typing import List

def minPathSum(grid:List[List[int]]) -> int:
    row = len(grid)
    col = len(grid[0])
    costGrid = [[0] * col for i in range(0, row)]

    costGrid[0][0] = grid[0][0]

    for y in range(1, row):
        costGrid[y][0] = costGrid[y -1][0] + grid[y][0]
    for x in range(1, col):
        costGrid[0][x] = costGrid[0][x-1] + grid[0][x]

    # bottom up
    for y in range(1, row):
        for x in range(1, col):
            minVal = min(costGrid[y][x-1], costGrid[y-1][x])
            costGrid[y][x] = minVal + grid[y][x]

    return costGrid[row-1][col-1]

grid = [[1,3,1,2],[2,4,5,2],[3,4,5,6],[1,5,6,2]]
print('minCost=',minPathSum(grid=grid))

출처 : (5) 코딩테스트, 초급, Min Sum Path - YouTube

댓글 영역