dequeue 쓰면 편하게 해결 가능
#include <iostream>
#include <deque>
int main() {
int t;
std::cin >> t;
std::deque<int> v;
for (int i = 0; i < t; i++) {
std::string p;
std::string _s;
int n;
std::cin >> p >> n;
v.clear();
std::cin >> _s;
bool reading = false;
int num = 0;
for (char& _c : _s) {
if (_c >= '0' && _c <= '9') {
num = num * 10 + _c - '0';
reading = true;
} else if (reading) {
v.push_back(num);
num = 0;
reading = false;
}
}
if (reading) {
v.push_back(num);
}
bool reversed = false;
bool overflowed = false;
for (char& _p : p) {
if (_p == 'R') {
reversed = !reversed;
} else if (_p == 'D') {
if (v.empty()) {
overflowed = true;
break;
}
if (!reversed) {
v.pop_front();
} else {
v.pop_back();
}
}
}
if (overflowed) {
std::cout << "error" << std::endl;
continue;
}
if (v.empty()) {
std::cout << "[]" << std::endl;
continue;
}
if (reversed) {
std::cout << "[";
for (auto it = v.rbegin(); it != v.rend()-1; ++it) {
std::cout << *it << ",";
}
std::cout << v.front() << "]" << std::endl;
} else {
std::cout << "[";
for (auto it = v.begin(); it != v.end()-1; ++it) {
std::cout << *it << ",";
}
std::cout << v.back() << "]" << std::endl;
}
}
return 0;
}'코딩 > cpp' 카테고리의 다른 글
| [백준] 10026번 (0) | 2025.10.08 |
|---|---|
| [백준] 7576번 (0) | 2025.10.07 |
| [백준] 1931번 (0) | 2025.10.07 |
| [백준] 1074번 (0) | 2025.10.07 |
| [백준] 14940번 (0) | 2025.10.07 |