[LeetCode] 0198. 집도둑

집 강도

Python, C++, JavaScript, SQL 및 TypeScript의 다양한 LeetCode 솔루션을 살펴보세요. 여러 프로그래밍 언어로 인터뷰 준비, 학습 및 코드 연습에 적합합니다. Github 레포 링크

중간
 

당신은 거리의 집을 털려는 전문 강도입니다. 각 집에는 일정량의 돈이 숨겨져 있습니다. 각 집에서 물건을 털지 못하게 하는 유일한 제약은 인접한 집에 보안 시스템이 연결되어 있고 같은 밤에 인접한 두 집에 침입하면 자동으로 경찰에 연락됩니다..

정수 배열이 주어지면 숫자 각 집의 금액을 나타내는 반환 오늘 밤에 훔칠 수 있는 최대 돈 경찰에 알리지도 않고.

 

예시 1:

입력: 숫자 = [1,2,3,1]
산출: 4
설명: 1번 집(돈 = 1)을 털고 3번 집(돈 = 3)을 훔칠 수 있습니다. = 1 + 3 = 4.

예 2:

입력: 숫자 = [2,7,9,3,1]
산출: 12
설명: 집 1개(돈 = 2), 집 3(돈 = 9), 집 5(돈 = 1)를 털 수 있습니다. = 2 + 9 + 1 = 12.

 

제약:

  • 1 <= 숫자.길이 <= 100
  • 0 <= 숫자[i] <= 400

파이썬

				
					# 시간 복잡도: O(n) # 공간 복잡도: O(1) import List 클래스 입력 시 해결 방법: def __init__(self) -> None: self.memo = {} def rob(self, nums: List[int]) -> int: self.memo = {} return self.robFrom(0, nums) def robFrom(self, i, nums): i >= len(nums): self.memo에 있는 경우 0을 반환: self를 반환합니다. memo[i] self.memo[i] = max(self.robFrom(i+1, nums), self.robFrom(i+2, nums) + nums[i]) return self.memo[i] nums = [ 1, 2, 3, 1] print(Solution().rob(nums))
				
			
ko_KR한국어