https://www.acmicpc.net/problem/1874
1874번: 스택 수열
1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다.
www.acmicpc.net
#include <iostream>
#include <stack>
#include <vector>
using namespace std;
int main()
{
stack<int> s;
vector<char> result;
vector<int> input;
int n;
cin >> n;
for (int i = 0; i < n; i++) {
int x;
cin >> x;
input.push_back(x);
}
int count = 0;
for (int i = 1; i <= n; i++) {
s.push(i);
result.push_back('+');
while (!s.empty() && s.top() == input[count]) {
s.pop();
result.push_back('-');
count++;
}
}
if (!s.empty()) {
cout << "NO";
}
else {
for (int i = 0; i < result.size(); i++) {
cout << result[i] << '\n';
}
}
}
설계