Menu
CoddyTech

House Robber

집들이 거리 옆에 일렬로 서 있고, nums[i]는 i번 집에 있는 돈입니다. 원하는 집에서 돈을 가져갈 수 있지만, 서로 이웃한 두 집에서 동시에 가져갈 수는 없습니다. 가져갈 수 있는 가장 큰 총액을 반환하세요.

함수

rob(nums: integer-array) → integer
numsinteger-array
거리 순서대로 각 집에 있는 돈
반환값integer
서로 인접한 두 집에서 가져오지 않고 가져갈 수 있는 최대 총액

제약 조건

  • 1 ≤ nums.length ≤ 104
  • 0 ≤ nums[i] ≤ 1000
  • 정답은 최대 5 × 106이므로 부호 있는 32비트 정수에 들어갑니다.

예제

입력
nums = [5, 3, 4, 11, 2]
출력
16
설명
집 0과 3에서 5와 11을 가져와 16을 만드세요. 집을 연속으로 두 개 건너뛰어도 되며, 이 경우 다른 모든 계획보다 더 좋은 결과를 냅니다: 5 + 4 + 2 = 11, 3 + 11 = 14.
challenge icon

후속 질문

가져갈 집들과 총합을 함께 반환하세요. 그 목록을 다시 만들려면 표에서 무엇을 보관해야 하며, 누적 합계 두 개로도 할 수 있을까요?

코드 초기화
def rob(nums):
    # 여기에 코드를 작성하세요

테스트 #1

테스트 #2

테스트 #3

인자

nums = [5, 3, 4, 11, 2]

예상 출력

16