업데이트:

최대 1 분 소요

링크

https://leetcode.com/problems/best-time-to-buy-and-sell-stock/?envType=study-plan-v2&envId=top-interview-150

풀이

주어진 배열 prices 에서 최적의 시기에 매입하고 매각하여 이익을 최대화해야 하는 문제.

  1. 매입은 가장 작은 값에서 수행되어야 하기 때문에, 큰 수 float(inf)로 초기화한다.
  2. 매각은 가장 큰 값에서 수행되어야 하기 때문에, 작은 수 0 으로 초기화 한다.
  3. prices를 순회하며 다음 동작을 수행한다.
    1. 현재 탐색가(prices[i]) 에서 매입가를 뺀 현재 수익과 이전의 수익을 비교하여 더 큰쪽을 현재 이익으로 취한다.
    2. 현재 탐색가와 이전 매입가를 비교해 더 작은 쪽을 매입한다.
  4. 마지막 까지 남은 현재 이익을 반환한다.

코드

Python

class Solution(object):
    def maxProfit(self, prices):
        buy = float('inf')
        cur = 0 

        for i in range(len(prices)):
            cur = max(cur, prices[i] - buy)
            buy = min(buy, prices[i])
        return cur

카테고리:

업데이트:

댓글남기기