Leetcode Java Best Time to Buy and Sell Stock with Transaction Fee
업데이트:
문제
코드
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;
}
}
결과
설명
- 동일 주식의 가격을 넣은 배열인 prices를 이용하여 거래 수수료가 fee인 거래를 통해 최대 이익을 찾는 문제이다.
- 단, 주식을 구매하면 반드시 판매 후 구매해야한다.
- 문제 풀이에 필요한 변수를 정의한다.
- profit은 최대 이익을 넣을 변수로, 0으로 초기화한다.
- hold는 판매하지 않고 유지할 경우의 금액으로, prices의 첫 값을 음수로 전환한 임의 값을 넣어준다.
- prices의 모든 값을 price에 넣어 아래를 반복 수행한다.
- profit에 기존 이익 금액인 profit과 구매했을 때의 값인 $hold + price - fee$ 중 큰 값을 넣어준다.
- hold에 기존 유지 금액인 hold와 판매했을 때의 값인 $profit - price$ 중 큰 값을 넣어준다.
- 반복이 완료되면 최대 이익을 저장한 profit을 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기