시간순으로 회사의 주가를 나타내는 가격 목록이 있다고 가정하면 해당 주식을 한 번만 사고 팔 때 얻을 수 있는 최대 이익을 찾아야 합니다. 우리는 그것을 팔기 전에 먼저 사야 한다는 것을 명심해야 합니다.
따라서 입력이 가격 =[10, 12, 9, 6, 8, 12]와 같으면 출력은 6이 됩니다. 6에서 사고 12에서 팔 수 있기 때문입니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 최대 수익 :=0
- 최소 재고 :=무한대
- 가격의 각 가격에 대해 다음을 수행합니다.
- max_profit :=max_profit의 최대값 및 (가격 - min_stock)
- min_stock :=min_stock 및 가격의 최소값
- 최대 수익을 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
class Solution: def solve(self, prices): max_profit = 0 min_stock = float('inf') for price in prices: max_profit = max(max_profit, price - min_stock) min_stock = min(min_stock, price) return max_profit ob = Solution() print(ob.solve([10, 12, 9, 6, 8, 12]))
입력
[10, 12, 9, 6, 8, 12]
출력
6