반응형

 

주어진 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

+ Recent posts