Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 끝에서 K 개의 숫자를 제거하여 최대 합계를 찾는 프로그램

<시간/>

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