스택에 쌓으며 가격이 떨어진다면 해당 가격의 인덱스에 현재 인덱스 - 해당 가격의 인덱스를 넣어주면 되는 문제이다. 크게 어렵지는 않다.
#include <string>
#include <vector>
#include <deque>
using namespace std;
vector<int> solution(vector<int> prices)
{
int n = prices.size();
vector<int> answer(n);
deque<pair<int,int>> dq;
for(int i=0;i<prices.size();i++)
{
while (!dq.empty() && dq.front().first > prices[i])
{
answer[dq.front().second] = i - dq.front().second;//주식이 떨어졌다면 몇초뒤에 떨어졌는지
dq.pop_front();
}
dq.push_front({prices[i], i});
}
for(auto c : dq) answer[c.second] = n - c.second - 1;// 떨어진적 없는 주식들
return answer;
}