알고리즘 분류
자료 구조
스택
문제 해결 아이디어
stack을 이용하여 empty()가 아닌 동안 자기보다 큰 값이 나올 때까지 pop()하고
empty()가 되면 -1를 넣으면 된다.
코드
#include <iostream>
#include <stack>
using namespace std;
int n;
int arr[1000001];
int result[1000001];
stack<int> st;
int main()
{
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> arr[i];
}
for (int i = n - 1; i >= 0; i--)
{
while (!st.empty())
{
if (st.top() > arr[i])
{
result[i] = st.top();
break;
}
else
st.pop();
}
if (st.empty()) result[i] = -1;
st.push(arr[i]);
}
for (int i = 0; i < n; i++)
{
cout << result[i] << ' ';
}
}
'Algorithm > 스택과 큐' 카테고리의 다른 글
백준 히스토그램에서 가장 큰 직사각형(6549) C++ 풀이 (0) | 2023.01.30 |
---|---|
백준 오아시스 재결합(3015) C++ 풀이 (0) | 2023.01.30 |
백준 옥상 정원 꾸미기(6198) C++ 풀이 (0) | 2023.01.28 |
백준 탑(2493) C++ 풀이 (0) | 2023.01.28 |
백준 스택 수열(1874) C++ 풀이 (0) | 2023.01.28 |