본문 바로가기

PS/릿코드

[릿코드 122] Best Time to Buy and Sell Stock II (파이썬/python)

728x90

https://leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/description/

 

Best Time to Buy and Sell Stock II - LeetCode

Can you solve this real interview question? Best Time to Buy and Sell Stock II - You are given an integer array prices where prices[i] is the price of a given stock on the ith day. On each day, you may decide to buy and/or sell the stock. You can only hold

leetcode.com

 

그리디 하게 문제를 풀었습니다.
전부를 탐색하며 현재 다음 가격부터 탐색을 하며
가격이 우상향중일때는 팔지 않고
우상향하다 최고점일때 판매하는 전략을 사용하였습니다.

 

제가 푼 풀이는 그래프상 속도가 빠르지는 않네요..

 

제가 푼 풀이 :

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        answer = 0
        i = 0
        while i < len(prices):
            current_price = prices[i]
            target_sell_price = current_price

            sell_flag = False
            for j in range(i + 1, len(prices)):
                if prices[j] <= target_sell_price:
                    i = j -1
                    break
                target_sell_price = prices[j]

                if j == len(prices) - 1:
                    sell_flag = True

            answer += target_sell_price - current_price

            if sell_flag:
                break
            i += 1

        return answer

 

 

다른 분들의 풀이를 참고한 풀이:

결국 가격이 우상향일때는 샀다 팔았다를 해도 저렴했을때 샀다가 꼭지점일때 팔은 가격이 나오기때문에

아래처럼 코드를 써도 무관했음..

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        answer = 0

        for i in range(1, len(prices)):
            # 현재 가격이 이전가격보다 크다면
            if prices[i] > prices[i - 1]:
                answer += prices[i] - prices[i - 1]

        return answer
728x90