121. Best Time to Buy and Sell Stock

선우·2023년 1월 6일
0

Approach

  • prices 첫번째 요소를 min 변수로 잡아두고, max, best 변수를 0으로 초기화하였다.
  • min보다 더 작은 값이 나오면 min을 교체해주고, min 보다 큰 값이나오면 그 값에다가 min을 뺀 값을 best에 저장해준다. 그 값은 max에다가 저장해준다.
    • prices[i]가 min 변수보다 작으면 min을 prices[i]로 바꿔준다.
    • prices[i]가 min 변수보다 크면 max 값을 prices[i]로 갱신하고, prices[i] - min 값을 best에다가 넣어준다.
  • best값을 리턴한다.

Code

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int min = prices[0], max = 0, best = 0;

        for(int i = 1; i < prices.size(); i++)
        {
            if(prices[i] < min) 
            {
                min = prices[i];
                continue;
            }

            int n = prices[i] - min;
            if(best < n)
            {
                max = prices[i];
                best = n;
            }
        }

        return best;
    }
};

Result


추가적인 해결방법

1

  • max함수를 활용하여 기존의 best값과 prices[i]-min을 비교하여 best에 바로 집어넣는다.
    class Solution {
    public:
        int maxNum(int a, int b)
        {
            if(a > b) return a;
            return b;
        }
    
        int maxProfit(vector<int>& prices) {
            int min = prices[0], max = 0, best = 0;
    
            for(int i = 1; i < prices.size(); i++)
            {
                if(prices[i] < min) 
                {
                    min = prices[i];
                    continue;
                }
               
                best = maxNum(best, prices[i]-min);
            }
    
            return best;
        }
    };

2

  • INT_MAX로 정수가 가질수있는 가장 큰 값을 lsf변수에 저장한다.
  • prices[i]가 lsf보다 작으면 lsf값을 prices[i] 값으로 바꿔준다.
  • pist에 prices[i] - lsf값을 저장하여 op보다 크면 op를 pist로 바꿔준다.
  • op를 return한다.
    class Solution {
    public:
        int maxProfit(vector<int>& prices) {
            int lsf = INT_MAX;
            int op = 0;
            int pist = 0;
    
            for(int i = 0; i < prices.size(); i++){
                if(prices[i] < lsf){
                    lsf = prices[i];
                }
                pist = prices[i] - lsf;
                if(op < pist){
                    op = pist;
                }
            }
            return op;
        }
    };

profile
누누의 잡다저장소

0개의 댓글