LeetCode/Easy

121. Best Time to Buy and Sell Stock

GenieLove! 2022. 1. 16. 12:58
728x90
반응형

Go

func maxProfit(prices []int) int {
    minPrice := prices[0]
    profit := 0
    
    for _, v := range prices[1:] {
        profit = intMax(profit, v - minPrice)
        minPrice = intMin(minPrice, v)
    }
    return profit
    
}

func intMax(a int, b int) int {
    if a > b {
        return a
    }
    return b
}

func intMin(a int, b int) int {
    if a < b {
        return a
    }
    return b
}

Python

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        max_profit = 0
        min_price = prices[0]
        
        for v in iter(prices[1:]):
            max_profit = max(max_profit, v - min_price)
            min_price = min(min_price, v)
        
        return max_profit
        
        
#         두번째 방법
#         min_price = prices[0]#가장 작은 가격
#         max_price = 0
#         max_profit = 0
        
#         for v in iter(prices[1:]):
#             max_price = max(v, max_price)
#             if v < min_price:
#                 max_profit = max(max_price - min_price, max_profit)
#                 min_price, max_price = v, 0
                
#         return max(max_profit, max_price - min_price)
                
        
        
#         첫번째 방법 -> 타임아웃
#         result = 0

        
#         for i, v in enumerate(prices[:-1]):
#             max_price = max(prices[i+1:]) -v
#             if result < max_price:
#                 result = max_price
#         return result
728x90
반응형