#include <iostream>
#include <vector>
#include <stack>
using namespace std;
int N;
vector<int> v;
stack<pair<int, int> >s;
int main(int argc, char **argv){
scanf("%d", &N);
int x;
for(int i=0; i<N; i++){
scanf("%d", &x);
v.push_back(x);
}
for(int i=0; i<N; i++){ // O(N)
while(!s.empty() && v[i] > s.top().first){
s.pop();
}
if(!s.empty()){
printf("%d ", s.top().second);
} else {
printf("0 ");
}
s.push(make_pair(v[i], i+1)); // pair 만들어줌
}
return 0;
}
뭐지 왜 쉬운데 골드 5 문제지?
왼쪽에 있는 나보다 높은 탑의 번호를 출력하면 되는 문제.
그냥 하나씩 스택에 넣어주면서 나보다 높이가 낮으면 pop하고 아니면 그 탑의 index 번호를 출력하면 되는 문제이다.
그리고 드디어 골드에 도달했다! 하지만 골드 문제는 고작 5문제 풀었고 내 힘으로 푼 건 고작 3문제밖에 안된다... 물골드 그 자체 인간.
그래도 이제 골드 5 문제를 슬슬 풀 수 있는 걸 보면서 그만큼 실력이 향상된 걸꺼라고 믿어보며. 아자아자 화이팅