프로그래머스 땅따먹기

맹민재·2023년 4월 4일
0

알고리즘

목록 보기
28/134
def solution(land):
    answer = 0
    l = len(land)
    dp = [[0]*4 for _ in range(l)]
    dp[0] = land[0]
    
    for i in range(1, l):
        dp[i][0] = max(dp[i-1][1],dp[i-1][2],dp[i-1][3]) + land[i][0]
        dp[i][1] = max(dp[i-1][0],dp[i-1][2],dp[i-1][3]) + land[i][1]
        dp[i][2] = max(dp[i-1][0],dp[i-1][1],dp[i-1][3]) + land[i][2]
        dp[i][3] = max(dp[i-1][0],dp[i-1][1],dp[i-1][2]) + land[i][3]
    answer = max(dp[-1])
    
    return answer

dp를 사용해 해결
이전에 밟은 땅과 같은 index의 땅은 밟을 수 없으므로 이전 누적 dp에서 해당 index 뺀 것중 max 값을 가져와 계속 누적시켜준다.

profile
ㄱH ㅂrㄹ ㅈr

0개의 댓글