반응형
주어진 int 배열은 하나의 주가이며, 이 주가에서 얻을 수 있는 최대 수익을 출력하는것이 문제입니다.
낮은가격에 사 높은 가격에 판다면 이익을 얻습니다.
그렇기 때문에, 현재 시점의 주가와 다음 시가의 주가를 비교하여 차익이 있는 것들만 sumation하면 되는 문제입니다.
(차익이 난다면 바로 팔기때문에 greedy 분류의 문제입니다.)
아래는 제가 푼 python 코드 입니다.
from typing import List
class Solution:
def maxProfit(self, prices: List[int]) -> int:
res = 0
prices_len = len(prices)
for i in range(0, prices_len, 1):
if i+1 < prices_len and prices[i] < prices[i+1]:
res += (prices[i+1] - prices[i])
return res
if __name__ == '__main__':
s = Solution()
s.maxProfit([7,1,5,3,6,4])
저의 경우, 배열의 인덱스를 넘지 않기 위해 if 문에 다음 인덱스가 있는지의 체크가 추가되었습니다.
감사합니다.
반응형
'Algorithm > greedy' 카테고리의 다른 글
leetcode - Maximize Sum Of Array After K Negations (0) | 2020.03.11 |
---|---|
leetcode - Walking Robot Simulation (2) | 2020.03.10 |
leetcode - Lemonade Change (0) | 2020.03.05 |
leetcode - Assign Cookies (0) | 2020.03.04 |
leetcode - Is Subsequence (0) | 2020.03.03 |