https://school.programmers.co.kr/learn/courses/30/lessons/154539
구현 아이디어 3분 구현 7분
#include <string>
#include <vector>
#include <queue>
#include <stack>
using namespace std;
vector<int> solution(vector<int> numbers) {
int N = numbers.size();
vector<int> answer(N);
vector<int> V(N);
queue<int> Q;
stack<int> S;
for(int i = N - 1; i >= 0; --i)
Q.push(numbers[i]);
for(int i = N - 1; i >= 0; --i)
{
int cur = Q.front();
Q.pop();
if(!S.empty())
{
while(!S.empty())
{
int pick = S.top();
if(pick > cur)
{
V[i] = pick;
break;
}
else S.pop();
}
}
if(S.empty()) V[i] = -1;
S.push(cur);
}
for(int i = 0; i < N; ++i)
answer[i] = V[i];
return answer;
}