Open robert-min opened 1 year ago
def solution(money):
"""
Return 도둑이 훔칠 수 있는 최대값
- 집은 둥근 형태로 배치 => 첫 집과 마지막 집은 연결 됨.
- dp : 그 집에서 털 수 있는 최대
- 현재 집 X => 이전 집 dp[i-1]
- 현재 진 O => 이전전 집 dp[i-2] + 현재 집 money[i]
"""
# 첫 집을 무조건 터는 경우(마지막 집X)
dp1 = [0] * len(money)
dp1[0] = money[0]
dp1[1] = max(money[0], money[1])
for i in range(2, len(money)-1):
dp1[i] = max(dp1[i-1], money[i]+dp1[i-2])
# 마지막 집을 무조건 터는 경우(첫 집 X)
dp2 = [0] * len(money)
dp2[0] = 0
dp2[1] = money[1]
for i in range(2, len(money)):
dp2[i] = max(dp2[i-1], money[i]+dp2[i-2])
# 두 경우 중 최대
return max(max(dp1), max(dp2))
호텔방배정