https://programmers.co.kr/learn/courses/30/lessons/12913
def solution(land):
N, M = len(land), len(land[0])
dp = [[0 for _ in range(M)] for _ in range(N)]
for j in range(M):
dp[0][j] = land[0][j]
for i in range(1, N):
for j in range(M):
dp[i][j] = max(dp[i-1][:j]+dp[i-1][j+1:])+land[i][j]
return max(dp[-1])
DP
1. land를 이용해서 N과 M을 구하고 2차원 dp를 정의
2. dp의 맨 윗줄을 land값으로 초기화
3. dp
- 이전 행에서 자신의 열을 제외한 dp리스트(슬라이싱 이용)에서 가장 큰 값과 자신의 값의 합을 dp에 초기화
4. dp의 마지막 행의 최댓값 출력
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv2 - 최댓값과 최솟값 (파이썬) (0) | 2022.05.17 |
---|---|
[프로그래머스] Lv2 - 숫자의 표현 (파이썬) (0) | 2022.05.17 |
[프로그래머스] Lv2 - 다음 큰 숫자 (파이썬) (0) | 2022.05.14 |
[프로그래머스] Lv2 - 올바른 괄호 (파이썬) (0) | 2022.05.14 |
[프로그래머스] Lv2 - 가장 큰 정사각형 찾기 (파이썬) (0) | 2022.05.14 |