Codecata ⎜ 배열에서 증가된 최대 수 찾기(주식 수익)

배열에서 증가된 최대 수 찾기(주식 수익)

문제

prices는 배열이며, 각 요소는 매일의 주식 가격입니다. 만약 한 번만 거래할 수 있다면 = 사고 팔 수 있다면, 제일 큰 이익은 얼마일까요?

예를 들어,

Input: [7,1,5,3,6,4] Output: 5 Input: [7,1,5,3,6,4] Output: 5 설명: 2일(가격=1)에 샀다가 5일(가격=6)에 사는 것이 6-1이라 제일 큰 수익 7-1=6 은 안 되는거 아시죠? 먼저 사야 팔 수 있습니다.

Input: [7,6,4,3,1] Output: 0 Input: [7,6,4,3,1] Output: 0 설명: 여기서는 매일 가격이 낮아지기 때문에 거래가 없습니다. 그래서 0



나의 풀이

def maxProfit(prices): 
  minimum = prices.index(min(prices))
  maximum = prices.index(max(prices[minimum:]))

  if minimum == maximum:
        return 0
  else:
        return prices[maximum] - prices[minimum]



코드카타 리뷰

그래프 넓이 구하는 알고리즘이랑 동일한 방법으로 인덱스(left, right) 2개를 가운데로 좁혀가며 풀 수 있을줄 알았는데 불가능했다.
배열의 증가된 max값 구하는 것과 그래프의 넓이 문제는 max 넓이를 구하는 것이 비슷하다고 생각했으나, max 값 계산을 위한 value 값들의 특성이 달랐다.
그래프 넓이 문제는 value값 2개 모두 max를 찾으면 됐지만 이번 문제는 1개는 max값 1개는 min값을 찾아야 하는점이 차이점이다.
결국 index 양쪽 접근 방법을 포기하고 다른 방법으로 쉽게 풀 수 있었다.


cf. 그래프 문제

Codecata ⎜ 그래프의 최대 넓이 찾기

댓글남기기