122. Best Time to Buy and Sell Stock II

Taesoo Kim·2023년 2월 6일
0

CrackingAlgorithm

목록 보기
20/36

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

Problem

전에 풀었던 주식 문제와 똑같지만, 전의 문제는 수익을 낼 수 있는 기회가 한번이라면, 이번 문제는 자유롭게 사고 파는게 가능합니다. 단, 주식을 여러개 사 들고있을수는 없고, 한개씩만 사고 팔수 있습니다.

관련문제: 121. Best Time to Buy and Sell Stock

Approach

처음 문제를 봤을땐, 여러가지 경우를 고려할 수 있는 DP문제라고 생각했어요. 근데 DP의 핵심은 점화식이라고 생각하여 계속 문제의 점화식을 생각하는데, 잘 안나와서, 혹시 그냥 그리디인가..? 싶어 도전해봤더니 바로 정답ㅋㅋ

Solution

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

별로 어렵지 않은 로직입니다. 바로 전 타임의 가격이 지금보다 싸면 무조건 사서 당장 파는 형식입니다. 왠지 아닌 테케가 있을거 같지만서도 다들 맞는 풀이라고 하네요. 계속해서 주식 시리즈를 풀어보겠습니다. 생각보다 시계열 데이터를 처리하는 로직이 재미있네요.

profile
SailingToTheMoooon

0개의 댓글