프로그래머스. Level 3. 도둑질 파이썬 풀이
문제링크 https://programmers.co.kr/learn/courses/30/lessons/42897
def solution(money):
answer = 0
# 첫번째 집을 안털었을 때
d = [0] * len(money)
d[0] = 0
d[1] = money[1]
for i in range(2, len(money)):
if i == 2:
d[i] = max([d[i - 1], d[i - 2] + money[i]])
else:
d[i] = max(d[i - 1], d[i - 2] + money[i], d[i - 3] + money[i])
# 마지막 집을 안털었을 때
d1 = [0] * len(money)
d1[0] = money[0]
d1[1] = money[1]
money[-1] = 0
for i in range(2, len(money)):
if i == 2:
d1[i] = max(d1[i - 1], d1[i - 2] + money[i])
else:
d1[i] = max(d1[i - 1], d1[i - 2] + money[i], d1[i - 3] + money[i])
return max(d[-1], d1[-1])