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

Python에서 주어진 합계를 형성하기 위해 추가할 최소 요소를 찾는 프로그램

<시간/>

nums라는 배열과 두 개의 값 제한 및 목표가 있다고 가정합니다. |nums[i]| 때문에 배열이 특별합니다. <=모든 i에 대한 제한은 0에서 배열의 크기 - 1까지입니다. 배열의 합이 목표와 같게 하려면 삽입할 요소의 최소 수를 찾아야 합니다. 배열 요소는 제한 값을 초과할 수 없습니다.

따라서 입력이 nums =[2,-2,2], limit =3, goal =-4와 같으면 출력은 2가 됩니다. 왜냐하면 우리는 2(-3)를 더할 수 있기 때문입니다. [2,-2,2,-3,-3]

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

  • s :=숫자에 있는 모든 요소의 합

  • ab :=|목표 - 초|

  • (ab / limit)

    의 상한을 반환합니다.

예시

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

from math import ceil

def solve(nums, limit, goal):
   s = sum(nums)
   ab = abs(goal - s)
   return ceil(ab / limit)

nums = [2,-2,2]
limit = 3
goal = -4
print(solve(nums, limit, goal))

입력

[2,-2,2], 3, -4

출력

2.0