#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;
}