leetcode(리트코드)-931 Minimum Falling Path Sum(PYTHON)
leetcode(리트코드)-931 Minimum Falling Path Sum(PYTHON)
leetcode 931 - Minimum Falling Path Sum 문제입니다.
1. 문제
https://leetcode.com/problems/minimum-falling-path-sum/
2. Input , Output
3. 분류 및 난이도
Medium 난이도 문제입니다.
4. 문제 해석
- 파스칼 삼각형처럼 matrix를 순차적으로 내려갑니다.
- 내려가면서 나온 숫자들을 더할 때 가장 작은 값을 리턴하세요.
5. code
코드설명
- 세 가지 경우가 있습니다.
- col의 사이즈가 1인경우 그냥 흘러내려가면 됩니다.
- col의 사이즈가 2 이상인 경우 위의 폭포의 ↖, ↑, ↗의 경우를 살펴줘야합니다.
- 파이썬의 특성상 범위를 벗어나도 파이썬 자체가 커버를 쳐주는 부분이 있어서 밑의 코드에서 예외처리를 안 해줬습니다.
python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution:
def minFallingPathSum(self, matrix: List[List[int]]) -> int:
row = len(matrix)
col = len(matrix[0])
if col == 1:
res = 0
for i in range(row):
res += matrix[i][0]
return res
for i in range(1,row):
for j in range(col):
if j == col-1 :
matrix[i][j] = min(matrix[i-1][j],matrix[i-1][j-1]) + matrix[i][j]
elif j != 0 :
matrix[i][j] = min(matrix[i-1][j-1],matrix[i-1][j],matrix[i-1][j+1]) + matrix[i][j]
else :
matrix[i][j] = min(matrix[i-1][j],matrix[i-1][j+1]) + matrix[i][j]
return min(matrix[row-1])
6. 결과 및 후기, 개선점
필요시 c++로 짜드립니다.
설명이 필요하다면 댓글을 달아주세요.
This post is licensed under CC BY 4.0 by the author.