문제
풀이
•
입력을 큐로 받고
•
가장 앞에있는 숫자만큼 tmp 스택을 쌓는다.
•
다 쌓고 나면 스택 top 과 큐 의 front 가 같을떄마다 스택과 큐를 pop 한다.
•
만약 스택과 큐의 front 다 다르면 NO
•
엔터로 endl 는 매우 느리다. \n 을 적극적으로 쓰는걸 권장!
구현
#include <iostream>
#include <queue>
#include <stack>
#include <vector>
using namespace std;
int n;
queue<int> nums;
stack<int> tmp;
vector<char> result;
void pre() {
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
}
void input() {
int _t;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> _t;
nums.push(_t);
}
}
void solve() {
int i;
i = 1;
while (nums.size()) {
for (; i <= nums.front(); i++) {
tmp.push(i);
result.push_back('+');
}
if (tmp.top() == nums.front()) {
nums.pop();
tmp.pop();
result.push_back('-');
} else
break;
}
if (nums.size() > 1) {
cout << "NO";
} else {
for(auto& i : result)
cout << i << "\n";
}
}
int main() {
pre();
input();
solve();
return (0);
}
C++
복사