알고리즘 | Algorithm

[프로그래머스] 도둑질 (DP, 파이썬)

개발자R 2020. 5. 5. 15:29
반응형

링크 : https://programmers.co.kr/learn/courses/30/lessons/42897

def dp(visited, money, n):
    answer = 0
    for i in range(n, len(money)):
        visited[i] = max(visited[i-1], visited[i-2]+money[i]) 
    #첫번째 집 간 경우, 마지막 집도 갔다면 빼주어야함
    if visited[0] != 0 :
        if visited[-1] == visited[-2]:
            return visited[-1]
        else:
            return visited[-2]
    else:
        return visited[-1]
    
def solution(money):
    answer = 0
    visited = [0 for x in range(len(money))]
    
    answer = max(dp([money[0], money[0], money[0]+money[2] ]+visited[3:], money, 3),  dp([0, money[1], money[1] ]+visited[3:], money, 3), dp([0, 0, money[2] ]+visited[3:], money, 3))
   
    return answer
반응형