시간 순서대로 회사의 주가를 나타내는 가격 목록이 있다고 가정하고 해당 주식을 여러 번 사고 팔 때 얻을 수 있는 최대 이익을 찾아야 합니다. 우리는 그것을 팔기 전에 먼저 사야 한다는 것을 명심해야 합니다.
따라서 입력이 가격 =[10, 50, 30, 40, 60]과 같으면 출력은 70이 됩니다. 우리는 10에서 사고, 50에서 팔고, 30에서 사고, 60에서 팔 수 있기 때문입니다.피>
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- prev_price :=무한대
- 이익:=0
- 가격의 각 p에 대해 다음을 수행합니다.
- p>
prev_price이면
- 이익 :=이익 + p - 이전 가격
- 이전_가격:=p
- p>
prev_price이면
- 수익금
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
class Solution: def solve(self, prices): prev_price = float("inf") profit = 0 for p in prices: if p > prev_price: profit += p - prev_price prev_price = p return profit ob = Solution() print(ob.solve([10, 50, 30, 40, 60]))
입력
[10, 50, 30, 40, 60]
출력
70