본문 바로가기

두두의 알고리즘/문제

[동적계획법] 릿코드 Medium 198 'House Robber' (Python)

728x90

<문제 링크>

https://leetcode.com/problems/house-robber/

 

House Robber - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com


<문제 풀이>

1. 더하는 숫자들이 이웃하지만 않으면 됨

2. 바로 직전의 돈과 두번째 전의 돈+현재 돈 중 큰 값을 구하면 됨

3. 집이 하나만 있을 수 있음

 

<코드>

class Solution:
    def rob(self, nums: List[int]) -> int:
        answer = []
        
        if len(nums)==1:
            return nums[-1]
        answer.append(nums[0])
        answer.append(max(nums[0], nums[1]))
        
        for i in range(2,len(nums)):
            answer.append(max(answer[i-1], answer[i-2]+nums[i]))
            
        return answer[-1]

 

<고쳐야 할 점>

  • 잘 이해해두고 알아두기