[Python] LeetCode 121. Best Time to Buy and Sell Stock

고뭉남·2023년 12월 26일
0

알고리즘

목록 보기
6/6

커피_한_잔_마시며_여유로웠던_때도_잠시

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

문제

LeetCode_121_Best_Time_to_Buy_and_Sell_Stock

풀이

import sys

class Solution:
    def maxProfit(self, prices):
        profit = 0
        min_price = sys.maxsize
        
        for p in prices:
            if p < min_price:
                min_price = p
                continue
            if profit < p - min_price:
                profit = p - min_price
        
        return profit

그렇게 어렵지 않은 문제였지만 그럼에도 정리를 해 놓는 이유는 문제에 접근할 때 초반에 헤매는 시간이 적지 않기 때문이다.

위의 문제의 핵심 포인트는 반복문의 현재 p의 값이 min_price보다 작은지, 큰지를 비교하여 각각의 경우를 다르게 처리해줘야 한다는 것이다.
문제를 풀고 난 지금에야 그렇게 많은 변수가 필요하지 않다는 것을 알고 있지만, 해당 문제를 처음 봤을 때 변수가 정말 많이 필요해보였다.
그래서 지나치게 많은 변수들을 선언했고, 이는 문제를 푸는 나 조차도 어떤 변수가 어떤 값을 담고있는지, 어떻게 연산을 해줘야하는지 헷갈리게 하기 충분했다.

import sys

class Solution:
    def maxProfit(self, prices):
        
        min_price, max_price = sys.maxsize, -sys.maxsize - 1
        result = 0
        
        ...

위의 코드는 내가 문제를 읽자마자 필요할 것 같은 변수들을 선언했던 부분이다.
돌이켜보니, 변수들을 선언한 시점에서 나는 문제에 대한 파악은 끝났다고 생각했던 것 같다.
그래서 이해가 부족한 채로 코드를 계속 짰고, 이는 결과적으로 꽤 긴 시간을 버리게 했다.

만약 실제 코딩 테스트에서 이런 실수를 범한다면 아마 다른 문제들을 풀 시간은 없지 않았을까 ...

느낀 점

항상 문제를 충분히 읽고 시간 복잡도도 고려해 보고 완벽히 이해한 다음에 풀기 시작하자.

profile
고뭉남입니다.

0개의 댓글