해당 문제는 배열을 순회하며 최저 금액을 갱신하고 최대 이익을 반환하면 되는 문제이다.
루프를 돌며, 최저 금액을 갱신할 때는 매도할 수 없기에 건너뛰고, 아닌 경우는 현재의 이익을 갱신하며 최대 이익인지 확인한다.
function maxProfit(prices: number[]): number {
let maxProfit = 0
let minPrice = Number.MAX_SAFE_INTEGER
for(const price of prices) {
// 최저가에 구매
if(price < minPrice) minPrice = price
else {
// 최대 이익 갱신
const curProfit = price - minPrice
maxProfit = Math.max(curProfit, maxProfit)
}
}
return maxProfit
};