도둑이 훔칠 수 있는 최대 금액을 구하는 문제다.
집에 존재하는 돈의 액수는 배열의 형태로 주어지고, 연속된 두개의 집을 털게되면 경찰에게 발각된다.
예를들어 [1,2,3,1]이 주어졌을 때 훔칠 수 있는 최대 금액은 1+3으로 4가 된다.
class Solution:
def rob(self, nums: List[int]) -> int:
if len(nums) < 3:
return max(nums)
memo = [0] * (len(nums) + 1)
memo[1] = nums[0]
for i in range(1, len(nums)):
memo[i+1] = max(memo[i], memo[i-1] + nums[i])
return memo[-1]
memo
를 만든다.memo
의 마지막 값이 정답이 된다.