문제링크: https://leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/
전에 풀었던 주식 문제와 똑같지만, 전의 문제는 수익을 낼 수 있는 기회가 한번이라면, 이번 문제는 자유롭게 사고 파는게 가능합니다. 단, 주식을 여러개 사 들고있을수는 없고, 한개씩만 사고 팔수 있습니다.
관련문제: 121. Best Time to Buy and Sell Stock
처음 문제를 봤을땐, 여러가지 경우를 고려할 수 있는 DP문제라고 생각했어요. 근데 DP의 핵심은 점화식이라고 생각하여 계속 문제의 점화식을 생각하는데, 잘 안나와서, 혹시 그냥 그리디인가..? 싶어 도전해봤더니 바로 정답ㅋㅋ
class Solution:
def maxProfit(self, prices: List[int]) -> int:
total = 0
for i in range(1,len(prices)):
if prices[i] > prices[i-1]:
total += (prices[i] - prices[i-1])
return total
별로 어렵지 않은 로직입니다. 바로 전 타임의 가격이 지금보다 싸면 무조건 사서 당장 파는 형식입니다. 왠지 아닌 테케가 있을거 같지만서도 다들 맞는 풀이라고 하네요. 계속해서 주식 시리즈를 풀어보겠습니다. 생각보다 시계열 데이터를 처리하는 로직이 재미있네요.