일반적인 배열을 쓰면 시간초과 날 것같아 JS는 포기하고 C++에서 제공하는 자료구조를 사용해서 풀려고 했다.
다른 사람의 풀이를 참고했는데 C++은 deque를 2개둬서 커서를 기준으로 leftDQ
, rightDQ
를 둬서 문제의 요구사항대로 연산을 수행하고 결과를 리턴했다.
다른 사람의 풀이를 참고했을 때, deque
뿐만아니라 순수하게 2개의 스택으로도 커서 기준 왼쪽, 오른쪽을 나눠서 값을 얻을 수 있기 때문에 JS의 경우 스택 2개를 활용해 풀었다.
추후 작성 예정
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int N; cin >> N;
while(N--) {
string str; cin >> str;
deque<char> leftDQ;
deque<char> rightDQ;
for (auto ch : str) {
if (ch == '<') {
if (leftDQ.empty()) continue;
rightDQ.push_front(leftDQ.back());
leftDQ.pop_back();
}
else if (ch == '>') {
if (rightDQ.empty()) continue;
leftDQ.push_back(rightDQ.front());
rightDQ.pop_front();
}
else if (ch == '-') {
if (!leftDQ.empty()) leftDQ.pop_back();
}
else {
leftDQ.push_back(ch);
}
}
for (auto ch : leftDQ) cout << ch;
for (auto ch : rightDQ) cout << ch;
cout << '\n';
}
return 0;
}