ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 주식가격
    프로그래머스(Programmers) 2021. 12. 3. 01:17
    반응형

    문제설명

     

    입출력 예 설명

     

     

    #include <string>
    #include <vector>
    #include <stack>
    using namespace std;
    
    vector<int> solution(vector<int> prices) {
    
        
        int size=prices.size();
        stack<int> can; //stack에는 해당prices의 값이 들어가는 시간이 쌓인다.
        vector<int> arr(size); //몇초 지났는지 넣을 vector
        
        for(int i=0; i<prices.size(); i++)
        {
            while(!can.empty() && prices[can.top()] > prices[i]) // stack이 비어있지 않고 && 스택 맨위의 인덱스에 해당하는 prices의 가격 이 곧 들어올 prices보다 큰 경우 = 가격이 하락한 경우
            {
                arr[can.top()] = i-can.top();
                can.pop();
            }
            can.push(i);// 하락한 경우가 아닐 경우, stack에 prices의 INDEX값 삽입
        }
        
        while(!can.empty())
        {
            arr[can.top()] =size - can.top() -1;
            can.pop();
        }
        return arr;
    }
    
    int main()
    {
        vector<int> arr ={1,2,3,2,3};
        solution(arr);
        
        return 0;
        
    }

     

    => stack을 사용하여야 시간 복잡도에 걸리지 않는 문제입니다. 

    => 문제풀이는 주석을 보면 알 수 있습니다. 

    => 저는 arr의 사이즈를 정해주지 않고 계속 대입하는 오류를 범하여 'core dumped' Error가 떴었습니다. 

    => 해당 Error를 없애기 위해서는 미리 가장 최댓값인 10,000 크기의 vector를 생성하던지, prices.size() 크기만큼의 vector를 명시적으로 선언해주면 됩니다. 

     

     

    반응형

    '프로그래머스(Programmers)' 카테고리의 다른 글

    루시와 엘라 찾기  (0) 2021.12.08
    숫자 문자열과 영단어  (0) 2021.12.06
    위장  (0) 2021.12.01
    프린터  (0) 2021.11.28
    가장 큰 수  (0) 2021.11.26

    댓글

Designed by Who.