- 오른쪽이 큰 수를 찾는 문제
- 값을 저장하고 오른쪽부터 처리해준다.
- 스택의 top()이 현재 다루는 값보다 클 때까지 stk.pop()을 수행한다.
- stk.empty()라면 해당 위치에 -1을, 아니라면 stk.top()값을 넣어주고, 현재 값을 스택에 넣는다.
- 최종적으로 ans 배열에 저장된 값을 차례대로 출력하면 됨
#include <bits/stdc++.h> using namespace std; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int N, val; cin >> N; stack<int> stk; vector<int> vec(N, 0); vector<int> ans(N, -1); for(int i = 0; i < N; ++i) cin >> vec[i]; for(int i = N-1; i >= 0; --i){ while(!stk.empty() && stk.top() <= vec[i]) stk.pop(); if(stk.empty()) ans[i] = -1; else ans[i] = stk.top(); stk.push(vec[i]); } for(int i = 0; i < N; ++i) cout << ans[i] << ' '; return 0; }