문제접근
•
deque의 back이 현재 커서라고 생각하면 됨. 문자가 들어오면 그곳에 넣는다
•
< 면 deque의 back을 stack에 넣는다.
•
>면 stack의 top을 deque에 push_back한다. 커서가 바뀌기 떄문에
•
- 면 deque pop_back
•
각 행동을 할때 각 자료구조가 비어있지 않는지 확인
•
마지막에 stack 전부를 deque에 넣는다
•
deque을 front부터 출력
놓쳤던 부분
코드
3736 KB
108 ms
#include <iostream>
#include <stack>
#include <deque>
#include <string>
using namespace std;
int main(void) {
int n;
string input;
deque<char> answer;
stack<char> tmp;
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n;
for (int i = 0; i < n; i++) {
cin >> input;
for (unsigned int j = 0; j < input.size(); j++) {
if (input[j] == '<') {
if (!answer.empty()) {
tmp.push(answer.back());
answer.pop_back();
}
}
else if (input[j] == '>') {
if (!tmp.empty()) {
answer.push_back(tmp.top());
tmp.pop();
}
}
else if (input[j] == '-') {
if (!answer.empty())
answer.pop_back();
}
else
answer.push_back(input[j]);
}
while (!tmp.empty()) {
answer.push_back(tmp.top());
tmp.pop();
}
while (!answer.empty()) {
cout << answer.front();
answer.pop_front();
}
cout << "\n";
}
return (0);
}
C++
복사