TIL80. CodeKata : 가장 큰 이익을 얻을 수 있는 주식 차익 계산하기 문제

ID짱재·2021년 11월 12일
0

CodeKata

목록 보기
14/18
post-thumbnail

🌈 가장 큰 이익을 얻을 수 있는 주식 차익 계산하기 문제



🤔 나의 Solution

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로 절대값으로 변환 후 반환하면 된다.

profile
Keep Going, Keep Coding!

0개의 댓글