풀이 과정
1. 행이 10만개나 가능하므로 탐색문제로 해결하면 시간초과
2. 따라서 dp를 활용하여 문제를 해결함.
3. i행 j열의 경우, 이전 행에서 j열을 제외한 나머지 열중 최댓값 + i행 j열의 값으로 대체
import copy
def solution(land):
dp = copy.deepcopy(land)
for i in range(1, len(land)):
for j in range(len(land[0])):
for k in range(len(land[0])):
if k == j:
continue
dp[i][j] = max(dp[i][j], dp[i-1][k] + land[i][j])
return max(dp[len(land)-1])
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
'알고리즘[Python] > 프로그래머스' 카테고리의 다른 글
[ Lv 2 ] [3차] 압축 (0) | 2021.07.05 |
---|---|
[ Lv 2 ] 올바른 괄호 (0) | 2021.07.05 |
[ Lv 2 ] [3차] 방금그곡 (0) | 2021.07.03 |
[ Lv 2 ] 피보나치 수 (0) | 2021.07.01 |
[ Lv 2 ] 방문 길이 (0) | 2021.06.30 |