num이라는 숫자 목록과 다른 값 k가 있다고 가정합니다. 정확히 k번 팝해야 하는 경우 삭제할 수 있는 요소의 최대 합을 찾아야 합니다. 여기서 각 팝은 왼쪽 또는 오른쪽 끝에서 올 수 있습니다.
따라서 입력이 nums =[2, 4, 5, 3, 1] k =2와 같으면 2와 4를 삭제할 수 있으므로 출력은 6이 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- window :=인덱스 0부터 k - 1까지의 모든 숫자의 합계
- ans :=창
- 1~k 범위의 i에 대해 다음을 수행합니다.
- 창 :=창 - 숫자[k - i]
- 창 :=창 + 숫자[-i]
- ans :=ans 및 window의 최대값
- 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
class 솔루션:def solve(self, nums, k):window =sum(nums[:k]) ans =window in range(1, k + 1):window -=nums[k - i] window +=nums[-i] ans =max(ans, window) return ansob =Solution()nums =[2, 4, 5, 3, 1]k =2print(ob.solve(nums, k))사전>입력
[2, 4, 5, 3, 1], 2출력
6