프로그래밍
[프로그래머스 땅따먹기] 파이썬 풀이 🦄
Rudi
2021. 2. 17. 08:51
[프로그래머스 땅따먹기] 파이썬 풀이 🦄
문제
행을 위에서 아래로 지나면서 최대값을 구하는 DP문제
Keypoints
- DP[4] 리스트에 보관해야 하는 값은, 해당 땅을 밟았을 때의 최대값이다.
- 따라서 현재땅에서 이전 땅들(같은 열 제외)의 최대값을 더해주면 된다.
Solution
def solution(land):
dp = land[0]
for i in range(1, len(land)) :
temp = sorted([(j,i) for i,j in enumerate(dp)], key=lambda x:-x[0])
for j in range(4):
for k in range(4):
if temp[k][1] !=j:
dp[j] = land[i][j] + temp[k][0]
break
return max(dp)