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

Python에서 이익을 보유 및 판매하여 얻을 수 있는 최대 이익을 찾는 프로그램

<시간/>

회사의 주가를 시간순으로 나타내는 숫자 목록이 있다고 가정합니다. 우리는 하루에 주식을 최대 1주까지 살 수 있지만, 여러 주식을 보유할 수 있고 원하는 날짜에 주식을 팔 수 있습니다. 얻을 수 있는 최대 수익을 반환합니다.

따라서 입력이 nums =[3, 4, 7, 3, 5]와 같으면 출력은 9가 됩니다. 왜냐하면 3과 4에서 주식을 사서 7에서 팔 수 있기 때문입니다. 그런 다음 다시 3에서 구매하고 5에 판매합니다. 총 이익 (7 - 3) + (7 - 4) + (5 - 3) =9.

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

  • ans :=0
  • nums가 비어 있지 않은 동안 do
    • top :=숫자에서 마지막 요소 삭제
    • nums가 비어 있지 않고 top> nums의 마지막 요소인 동안 do
      • ans :=ans + (상단 - 숫자의 마지막 요소)
      • 숫자에서 마지막 요소 삭제
  • 반환

예시

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

def solve(nums):
   ans = 0
   while nums:
      top = nums.pop()
      while nums and top > nums[-1]:
         ans += top - nums.pop()

   return ans

nums = [3, 4, 7, 3, 5]
print(solve(nums))

입력

[3, 4, 7, 3, 5]

출력

9