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

파이썬에서 주식을 사고팔 때 얻을 수 있는 최대 이익을 찾는 프로그램?

<시간/>

시간순으로 회사의 주가 목록이 있다고 가정하고 주식을 사고팔 때 얻을 수 있는 최대 이익을 찾아야 합니다. 매도하기 전에 매수해야 하고 매도 후 하루를 기다려야 다시 매수할 수 있습니다.

따라서 입력이 가격 =[2, 6, 9, 4, 11]과 같으면 출력은 11이 됩니다. 2에서 구매하고 6에서 판매하고 하루를 기다렸다가 4에서 구매하고 11시에 판매합니다.

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

  • s :=0

  • b :=-무한대

  • 범위 0에서 가격 크기까지의 i에 대해

    • 온도 :=b

    • b :=최대 b 및 (s - 가격[i])

    • i가 0이 아니면

      • s :=s의 최대값 및 (temp + price[i - 1])

  • s의 최대값을 반환하고 (b + 가격의 마지막 요소)

더 나은 이해를 위해 다음 구현을 살펴보겠습니다.

예시

class Solution:
   def solve(self, prices):
      s = 0
      b = float("-inf")
      for i in range(len(prices)):
         temp = b
         b = max(b, s - prices[i])
         if i:
            s = max(s, temp + prices[i - 1])
      return max(s, b + prices[-1])

ob = Solution()
prices = [2, 6, 9, 4, 11]
print(ob.solve(prices))

입력

[2, 6, 9, 4, 11]

출력

11