House Robber
문제
- 두 이웃 집이 같은 밤에 도둑질 당하면 신고함
- 신고 당하지 않고 털 수 있는 최대 금액은?
풀이
- 연속으로 두 칸을 선택할 수는 없음
- dp[i] = [max(dp[i-2])+nums[i], dp[i-1][0]]
- dp[i][0] -> 두 집 전의 max + 이번 집
- dp[i][1] -> adjecent 집
class Solution:
def rob(self, nums: List[int]) -> int:
N = len(nums)
if N > 1:
dp = [[0,0] for _ in range(N)]
dp[0][0] = nums[0]
dp[1][1] = nums[0]
dp[1][0] = nums[1]
for i in range(2, N):
dp[i][0] = max(dp[i-2]) + nums[i]
dp[i][1] = dp[i-1][0]
return max(dp[-1])
else:
return max(nums)
결과
- 연속으로 두 칸을 선택할 수는 없음
- dp[i] = [max(dp[i-2])+nums[i], dp[i-1][0]]
- dp[i][0] -> 두 집 전의 max + 이번 집
- dp[i][1] -> adjecent 집
class Solution:
def rob(self, nums: List[int]) -> int:
N = len(nums)
if N > 1:
dp = [[0,0] for _ in range(N)]
dp[0][0] = nums[0]
dp[1][1] = nums[0]
dp[1][0] = nums[1]
for i in range(2, N):
dp[i][0] = max(dp[i-2]) + nums[i]
dp[i][1] = dp[i-1][0]
return max(dp[-1])
else:
return max(nums)
결과
Author And Source
이 문제에 관하여(House Robber), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@twinklesu914/House-Robber저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)