본문 바로가기

Coding Test/Programmers

[프로그래머스/파이썬] 도둑질

728x90

 

 

나의 풀이

def solution(money):
    dp1, dp2 = [money[0], money[0]], [0, money[1]]

    for i in range(2, len(money) - 1):
        dp1.append(max(dp1[i - 1], dp1[i - 2] + money[i]))
        dp2.append(max(dp2[i - 1], dp2[i - 2] + money[i]))

    return max(dp1[-1], max(dp2[-1], dp2[-2] + money[-1]))

 

 

 

배열을 이용하지 않은 풀이

def solution(a):
    x1, y1, z1 = a[0], a[1], a[0]+a[2]
    x2, y2, z2 = 0, a[1], a[2]
    for i in a[3:]:
        x1, y1, z1 = y1, z1, max(x1, y1)+i
        x2, y2, z2 = y2, z2, max(x2, y2)+i
    return max(x1, y1, y2, z2)
반응형