Problem :

https://leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/


My Solution :

class Solution:
def maxProfit(self, prices):
"""
:type prices: List[int]
:rtype: int
"""
profit = 0
n = len(prices)
i = 0
while True:
while i < n-1 and prices[i] >= prices[i+1]:
i += 1
j = i + 1
while j < n-1 and prices[j] <= prices[j+1]:
j += 1
if i < n and j < n:
profit += (prices[j] - prices[i])
else:
return profit
i = j + 1


Comment :

위 풀이는 이 문제를 처음 접했을 때 바로 떠올렸던 방법이다. 국지 최소 포인트와 국지 최대 포인트를 찾아서 차이를 더하는 방식이다. 그런데 풀고 나서 생각해보니 그냥 매 포인트마다 증가하면 더하는게 심플하겠더라.


My Solution2 :

class Solution:
def maxProfit(self, prices):
"""
:type prices: List[int]
:rtype: int
"""
profit = 0
for i in range(len(prices)-1):
if prices[i] < prices[i+1]:
profit += (prices[i+1] - prices[i])
return profit