#include <iostream>
#include <stack>
using namespace std;
int main(void)
{
int n, num, cnt = 1;
stack<int> s;
string result;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &num);
if (num >= cnt) { // 입력값이랑 같아질때까지 push
while (num + 1 != cnt) {
s.push(cnt++);
result += "+\n";
}
s.pop();
result += "-\n"; // 입력값 수열에 넣기
}
else {
if (s.top() == num) { // top이 입력값과 같으면 pop
s.pop();
result += "-\n";
}
else {
result = "NO";
break;
}
}
}
cout << result;
return 0;
}
진짜 아이디어는 있었는데 그걸 코드로 구현하는게 너무 어려웠다. 왜인지는 모르겠지만 한자기 아이디어에 꽂혀서 계속 while문을 돌려 출력시키려고 했고 계속 segment error가 나서 미치는 줄 알았다...
결국 아예 방법을 바꾸어서 하나씩하나씩 세는 것으로 변경하여 맞출 수 있었다. 진짜 너무너무 머리아파ㅜㅜ