[Leet Code] Best time to Buy and Sell Stock II

2024. 2. 9. 15:40Programmers

728x90
class Solution(object):
    def maxProfit(self, prices):
        total = 0
        buy = prices[0] # 산 주식을 리스트의 첫번째 원소로 지정
        
        for i in range(1, len(prices)):
            if prices[i] - buy > 0: # 현재 인덱스에서 주식을 팔았을 때 이득이면 팔고, 총 수익에 더해준다
                total += prices[i] - buy
                buy = prices[i]
            else:
                buy = min(buy, prices[i])
        return total

최저 값을 buy로 선언 후, 리스트 내 원소들과 비교하며 양수면 더해주고, 아니면 최저값만 갱신해주는  연산을 처리한다

[1,2,3,4,5]를 예시로 든다면,

# buy = 1
1 - 1 = 0 이므로 total 0, buy=1 유지

# buy 2
2 - 1 > 0 이므로 total 1, buy = 2

# buy 3
3 - 2 이므로 total 2, buy = 3 

# buy 4
4 - 3 이므로 total 3, buy = 4

# buy 5
5 - 4 이므로 total 4, buy = 4
728x90

'Programmers' 카테고리의 다른 글

[2644]촌수 계산  (0) 2024.04.10
[SQL] 노선별 평균 역 사이 거리 조회하기  (0) 2024.03.10
DP 에러 찾기  (0) 2023.09.03
Dynamic Programming 문제풀이  (0) 2023.09.02
코드 해석 _ LCS(9251)  (0) 2023.08.30