Leetcode Java Best Time to Buy and Sell Stock with Transaction Fee

업데이트:

문제

Link

코드

class Solution {

  public int maxProfit(int[] prices, int fee) {
    int profit = 0;
    int hold = -prices[0];
    for (int price : prices) {
      profit = Math.max(profit, hold + price - fee);
      hold = Math.max(hold, profit - price);
    }
    return profit;
  }

}

결과

Link

설명

  1. 동일 주식의 가격을 넣은 배열인 prices를 이용하여 거래 수수료가 fee인 거래를 통해 최대 이익을 찾는 문제이다.
    • 단, 주식을 구매하면 반드시 판매 후 구매해야한다.
  2. 문제 풀이에 필요한 변수를 정의한다.
    • profit은 최대 이익을 넣을 변수로, 0으로 초기화한다.
    • hold는 판매하지 않고 유지할 경우의 금액으로, prices의 첫 값을 음수로 전환한 임의 값을 넣어준다.
  3. prices의 모든 값을 price에 넣어 아래를 반복 수행한다.
    • profit에 기존 이익 금액인 profit과 구매했을 때의 값인 $hold + price - fee$ 중 큰 값을 넣어준다.
    • hold에 기존 유지 금액인 hold와 판매했을 때의 값인 $profit - price$ 중 큰 값을 넣어준다.
  4. 반복이 완료되면 최대 이익을 저장한 profit을 주어진 문제의 결과로 반환한다.

소스

Sample Code는 여기에서 확인 가능합니다.

댓글남기기