본문 바로가기
Daily Coding Challenge/Lv2

주식가

#include <vector>
#include <stack>

using namespace std;

vector<int> solution(vector<int> prices) 
{
    vector<int> answer(prices.size());
    stack<int> stack; // 가격 확인용 스택
    
    // prices만큼 반복
    for (int i = 0; i < prices.size(); i++)
    {
        // 1. 스택이 비어있지 않은 경우
        // 2. 현재 스택[TOP]이 다음 차례의 값보다 큰 경우 (떡락 시작)
        while (!stack.empty() && prices[stack.top()] > prices[i])
        {
            // {1 2 3 2 3} 그리고 index = 4 기준
            // 현재 시간 - 현재 값 => 4 - 3 = 1 = answer의 값은 1
            answer[stack.top()] = i - stack.top();
            stack.pop();
        }
        // 현재 인덱스 스택에 삽입
        stack.push(i);
    }
    // 스택을 비울때까지 반복
    while (!stack.empty())
    {
        answer[stack.top()] = prices.size() - stack.top() - 1;
        stack.pop();
    }
    return answer;
}

'Daily Coding Challenge > Lv2' 카테고리의 다른 글

프린터  (0) 2020.11.24
전화번호 목록  (0) 2020.11.24
타겟 넘버  (0) 2020.11.24