prices는 배열이며, 각 요소는 매일의 주식 가격입니다. 만약 한 번만 거래할 수 있다면(사고 팔 수 있다면), 제일 큰 이익은 얼마일까요?
✔️ 예를 들어, [7,1,5,3,6,4]이 배열로 주어진다면, 가장 큰 차익은 5이다. 1에 매입했다가 6에 매도하면 그 차이가 5이기 때문이다.
✔️ 7에 샀다가 1에 팔 수 없는 이유는 손해가 되기 때문이다.
✔️ 예를 들어, [7,6,4,3,1]이 배열로 주어진다면, 0을 반환한다. 사는 순간 매일 손해이기 때문이다.
def maxProfit(prices): stock_arr = len(prices) res = [] for i in range(stock_arr-1): current_index = i for j in range(i+1, stock_arr): current_benefit = prices[current_index] - prices[j] if current_benefit < 0: res.append(current_benefit) if len(res) == 0: return 0 else: return abs(min(res)) print(maxProfit([7,1,5,3,6,4])) # 5
✔️ 2중 배열로 현재 index를 current_index로 잡아두고, 순회하며 그 차이가 0보다 작다면 res에 append했다.
✔️ 0보다 작아야 수익이기 때문이다.
✔️ for문이 종료되면, res에 답긴 값 중에 가장 작은 값을 찾아내 abs로 절대값으로 변환 후 반환하면 된다.