prices는 배열이며, 각 요소는 매일의 주식 가격입니다. 만약 한 번만 거래할 수 있다면 = 사고 팔 수 있다면, 제일 큰 이익은 얼마일까요?
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
설명: 여기서는 매일 가격이 낮아지기 때문에 거래가 없습니다. 그래서 0
- 직관적인 풀이를 위해 배열 맨 뒤의 요소부터 맨 앞의 요소까지 뒷순서로 빼기로 했다.
- 이를 위해 이중의
for 문
을 만들었다.- 각 뺄셈에 대한 결과값을 빈 리스트에 차례차례 추가한다.
- 그 중 가장 큰 값을 반한한다.
- 단, 예외 조건으로 최대값이 음수일 경우 0을 반환하기로 했다.
def maxProfit(prices):
prices_list = []
for i in range(len(prices) - 1, -1 ,-1):
for j in range(i - 1, -1, -1):
prices_list.append(prices[i] - prices[j])
result = max(prices_list)
if result < 0:
return 0
return(result)