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입니다.

lock icon제출 시 숨은 테스트 +16개

challenge icon

후속 질문

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

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

케이스 1

케이스 2

케이스 3

입력

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

기대값

16