[Python] LeetCode 122. Best Time to Buy and Sell Stock II

송진영·2023년 8월 25일
0

LeetCode

목록 보기
7/8

문제 풀이

언제든 주식을 사고 팔 수 있는 상황에서 가장 많은 수익을 냈을 때의 값을 찾는 문제이다. 이 문제는 그리디 방식으로 풀었다.
주식을 살 수 있을 때 최대한 싼 주식으로 사고, 팔 수 있을 때는 무조건 팔면서 수익을 극대화하면 된다.

  1. 산 주식을 리스트의 첫 번째 원소로 지정해준다.

  2. for문으로 리스트의 두 번째 원소부터 탐색한다.

  3. 현재 인덱스에서 주식을 팔았을 때 이득이면 팔고, 총 수익에 더해준다.

  4. 그리고 다시 현재 주식을 산다.

  5. 이득이 아니면 산 주식과 현재 인덱스의 주식 중 싼 주식을 산 주식으로 해준다.

  6. 총 수익을 return 해준다.

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        total = 0
        buy = prices[0] ## 1. 산 주식을 리스트의 첫 번째 원소로 지정해준다.
        for i in range(1, len(prices)): ## 2. for문으로 리스트의 두 번째 원소부터 탐색한다.
            if prices[i]- buy > 0: ## 3. 현재 인덱스에서 주식을 팔았을 때 이득이면 팔고, 총 수익에 더해준다.
                total += prices[i] - buy
                buy = prices[i] ## 4. 그리고 다시 현재 주식을 산다.
            else:
                buy = min(buy, prices[i]) ## 5. 이득이 아니면 산 주식과 현재 인덱스의 주식 중 싼 주식을 산 주식으로 해준다.
        return total ## 6. 총 수익을 return 해준다.
profile
못하는 건 없다. 단지 그만큼 노력을 안 할 뿐이다.

0개의 댓글