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

Python을 사용하여 배열을 증가시키는 최소 연산을 찾는 프로그램

<시간/>

배열 번호가 있다고 가정합니다. 한 번의 작업으로 배열의 한 요소를 선택하고 1씩 늘릴 수 있습니다. 예를 들어, [4,5,6]이 있는 경우 인덱스 1의 요소를 선택하여 배열을 [4,5,5]로 만들 수 있습니다. . 그런 다음 nums를 엄격하게 증가시키는 데 필요한 최소 연산 수를 찾아야 합니다.

따라서 입력이 nums =[8,5,7]과 같으면 출력은 7이 됩니다. 왜냐하면 [8,6,7],[8,7,7],[8,8]과 같이 증가해야 하기 때문입니다. ,7],[8,9,7],[8,9,8],[8,9,9],[8,9,10].

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

  • 개수:=0

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

    • nums[i+1] −=nums[i]이면

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

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

  • 반환 횟수

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

예시

def solve(nums):
   count=0
   for i in range(len(nums)-1):
      if nums[i+1]<=nums[i]:
         count+=nums[i]-nums[i+1]+1
         nums[i+1]+=nums[i]-nums[i+1]+1
   return count
nums = [8,5,7]
print(solve(nums))

입력

[8,5,7]

출력

7