이전 문제와 다르게 다양한 구간에서 매수, 매도가 가능하다.
당연히 복잡하게 고민할 필요 없이
조금이라도 수익이 나는 구간에서 즉시 판매하고 다시 매수하는것이 가장 효율적인 방법이다.
function maxProfit(prices: number[]): number {
let profit = 0
// 수익이 발생하는 구간 탐색
for(let i = 1; i < prices.length; i++) {
const prev = prices[i - 1]
const current = prices[i]
// 매도 금액이 매수 금액보다 클 경우 즉시 판매
if(current > prev) profit += current - prev
}
return profit
};