프로그래밍

[프로그래머스 땅따먹기] 파이썬 풀이 🦄

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)

References

Problem Link