목차

도둑질

ps
링크programmers.co.kr/…
출처프로그래머스
문제 번호42897
문제명도둑질
레벨Level 4
분류

동적계획법

시간복잡도O(n)
인풋사이즈n<=1,000,000
사용한 언어Python
해결날짜2020/12/11
태그

고득점 Kit - 동적계획법

풀이

코드

"""Solution code for "Programmers 42897. 도둑질".

- Problem link: https://programmers.co.kr/learn/courses/30/lessons/42897
- Solution link: http://www.teferi.net/ps/problems/programmers/42897
"""

def solution(money):
    dp1, dp1_cur = [0, money[0]], max(money[0], money[1])
    dp2, dp2_cur = [0, 0], money[1]
    for m in money[2:]:
        dp1[-1], dp1[-2] = dp1_cur, dp1[-1]
        dp2[-1], dp2[-2] = dp2_cur, dp2[-1]
        dp1_cur = max(dp1[-1], dp1[-2] + m)
        dp2_cur = max(dp2[-1], dp2[-2] + m)
    return max(dp1[-1], dp2_cur)