Daily LeetCode Challenge - 714. Best Time to Buy and Sell Stock with Transaction Fee

Min Young Kim·2023년 6월 22일
0

algorithm

목록 보기
179/198

Problem From.

https://leetcode.com/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/

오늘 문제는 prices 배열이 주어지고, 각각의 주식을 팔때 발생하는 수수료 fee 가 주어졌을때, 최대의 이익을 반환하는 문제였다.

이 문제는 DP 를 이용해서 풀 수 있었는데, 각각의 날짜에, 주식을 구매한 상태일때와 하지 않은 상태일때를 구분해서 생각해야했다.

이미 구매한 상태라면, 그 다음에 취할 수 있는 행동이 가만히 있는다와 판다 두가지이고, 구매하지 않은 상태라면 다음 행동이 가만히 있는다와 산다 두가지밖에 없다.
그러므로 각각의 날짜에, 각각의 행동에 따른 최대값을 계속 가지고가다가, 마지막에는 결국 파는게 최대 이익을 취하는 방법이므로, sell 의 마지막 값을 통해서 최대값을 구할 수 있었다.

class Solution {
    fun maxProfit(prices: IntArray, fee: Int): Int {
        
        var buy = Int.MIN_VALUE
        var sell = 0
        
        for(price in prices){
            buy = maxOf(buy, sell - price)
            sell = maxOf(sell, buy + price - fee)
        }
        
        return sell
    }
}
profile
길을 찾는 개발자

0개의 댓글