213. House Robber II

Doyeon Kim·2022년 8월 31일

코딩테스트 공부

목록 보기
113/171

문제 링크 : https://leetcode.com/problems/house-robber-ii/


house robber에 이어서 house robber2에서는
첫번쨰 집과 맨 끝 집이 이어져있다는 조건
-> 첫번째 숫자와 마지막 숫자를 동시에 선택 불가능

이 추가된 문제이다.

nums = [1,2,3,1]이면

범위가 [1,2,3] 혹은 [2,3,1]중에 하나가 되는 것이다.
그 다음의 방법은 이전의 house robber문제와 동일하게 풀면 되는 문제이다

class Solution:
    def rob(self, nums: List[int]) -> int:
        def robb(nums):
            dp1, dp2 = 0 , 0
            
            # a = rob current, b= not robbing current
            for i in nums:
                dp1, dp2 = i+dp2, max(dp1, dp2)
            return max(dp1, dp2)
                
            
        return max(robb(nums[1:] or nums),robb(nums[:-1]))
profile
성장하고 도전하는 개발자. 프로그래밍 좋아하세요?

0개의 댓글