기본적인 스택문제인데, 수열 생성 연산과정을 출력할때
수열생성이 불가능한 경우도 있기때문에
push또는 pop의 결과를 바로바로 출력해선 안된다.
(불가능할 경우엔 과정 출력없이 "NO"만 출력되어야 하기때문)
따라서 push/pop 연산을 벡터에
저장하고, 수열생성이 완료되면
출력하는 식으로 해야된다.
#include <iostream>
#include <algorithm>
#include <vector>
#pragma warning(disable:4996)
#include <sstream>
#include <math.h>
#define endl '\n'
#include <stack>
using namespace std;
typedef long long ll;
int n;
stack<int> st;
vector<char> v;
int main(int argc, const char * argv[]){
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(nullptr);
cin >> n;
int num;
int temp = 1;
for(int i=0; i<n; i++){
cin >> num;
while(temp <= num){
st.push(temp);
v.push_back('+');
temp++;
}
if(st.top() == num){
st.pop();
v.push_back('-');
}
else{
cout << "NO" << endl;
return 0;
}
}
for(int i=0; i<v.size(); i++)
cout << v[i] << endl;
}