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

Python의 모든 양수 접두사 합계에 대해 처음에 삽입할 최소값을 찾는 프로그램

<시간/>

nums라는 숫자 목록이 있다고 가정합니다. 결과 목록의 접두사 합계에 모두 0보다 큰 숫자가 포함되도록 nums의 시작 부분에 삽입할 수 있는 최소 양수 값을 찾아야 합니다.

따라서 입력이 nums =[3, -6, 4, 3]과 같으면 출력은 4가 됩니다. 목록에 4를 삽입하면 [4, 3, -6, 4, 3]이 되기 때문입니다. . 이제 접두사 합계는 [4, 7, 1, 5, 8]이며 모두 0보다 큽니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 위치 0의 숫자에 0 삽입

  • 범위 1에서 숫자 - 1까지의 i에 대해 수행

    • 숫자[i] :=숫자[i] + 숫자[i - 1]

  • 1 반환 - 최소 숫자

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다.

def solve(nums):
   nums.insert(0, 0)
   for i in range(1, len(nums)):
      nums[i] += nums[i - 1]
   return 1 - min(nums)

nums = [3, -6, 4, 3]
print(solve(nums))

입력

[3, -6, 4, 3]

출력

4