/**
* @param {number[]} prices
* @return {number}
*/
const maxProfit = function(prices) {
let profit = 0;
for(let i=0; i<prices.length; i++) {
for(let j=i+1; j<prices.length; j++) {
if (prices[i] > prices[j]) {
continue;
}
profit = Math.max(profit, prices[j] - prices[i])
}
}
return profit
};
/**
* @param {number[]} prices
* @return {number}
*/
const maxProfit = function(prices) {
let profit = 0;
let min = prices[0]
for (let i=1; i<prices.length; i++) {
min = Math.min(min, prices[i-1]) // 구매 금액은 항상 판매 금액보다 앞인덱스에 있어야 하므로 i-1를 해준다.
profit = Math.max(prices[i]-min, profit)
}
return profit
};
왜 나는 값을 비교하라고하면 중첩반복문부터 생각이 나는 걸까..
아무래도 가장 단순하면서도 빠르게 구현할 수 있기 때문이겠지.
중첩반복문을 생각한게 잘못된건 아니다. 하지만 중첩반복문만이 답이라고 생각하는건 잘못된거다.
충분히 로직만 잘 생각하면 훨씬 효율적으로 할 수 있는 방법들은 언제나 존재한다.
좀 더 넓은 시야를 갖자..