인접하지 않은 집들을 털어 가장 많이 돈을 터는 경우의 최대합 구하기
알고리즘: Dinamic Programing
class Solution:
def rob(self, nums: List[int]) -> int:
l = len(nums)
if l == 1:
return nums[0]
nums[1] = max(nums[0], nums[1])
for i in range(2, l):
nums[i] = max(nums[i - 2] + nums[i], nums[i - 1])
return nums[l - 1]
'인접하지 않은', '최대합' => DP 문제였다.
나를 선택하지 않고 내 앞의 것을 선택하는 경우 = nums[i - 1]
내 앞의 것을 선택하지 않고 나와 내 앞앞 것을 선택하는 경우 = nums[i - 2] + nums[i]
이렇게 계속 nums 배열을 갱신해주었다.
nums[1]의 경우에만 자신과 바로 앞을 비교해주었다.
많은 도움이 되었습니다, 감사합니다.