이번 문제는 스택을 사용하여 풀었는데, 먼저 높이를 입력받고 현재 높이가 스택의 top보다 높다면 스택에 push한 다음 스택의 top의 높이가 현재 높이보다 작을 때까지 스택에서 원소를 제가했습니다. 그 다음스택의 top의 인덱스를 출력한 다음 현재 높이와 해당 인덱스를 스택에 추가했는데, 이 과정을 입력 받는 횟수 총 N번 만큼 반복하게하여 풀었습니다.
#include <iostream>
#include <stack>
#include <pair>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
stack<pair<int,int>> st;
st.push(make_pair(1234567890,0));
cin >> n;
for(int i=1;i<=n;i++){
int height;
cin >> height;
while(st.top().X<height){
st.pop();
}
cout << st.top().Y << ' ';
st.push(make_pair(height,i));
}
return 0;
}