문제 : https://www.acmicpc.net/problem/5430
[알고리즘풀이]
R을 만나면 방향을 바꿔서 삽입, 삭제를 진행해야되므로 양방향에서 삽입, 삭제를 할 수 있는 deque(덱)을 이용한다.
deque(덱) 자료구조 설명 : https://www.acmicpc.net/problem/5430
#include<iostream>
#include<string>
#include<deque>
using namespace std;
int main(void){
int t;
cin >> t;
while (t--) {
deque<int> dq;
int n, dir = 1;
bool flag = false;
string in1, in2;
cin >> in1 >> n >> in2;
int i = 1;
while (i < in2.length()) {
string temp = "\n";
while (1) {
if (in2[i] == ',' || in2[i] == ']')
break;
else{
temp += in2[i];
i++;
}
}
if (temp == "\n") {
break;
}
else{
dq.push_back(stoi(temp));
i++;
}
}
for (int i = 0; i < in1.length(); i++) {
if (in1[i] == 'D') {
if (dq.empty()) {
cout << "error\n";
flag = true;
break;
}
else if (dir)
dq.pop_front();
else
dq.pop_back();
}
if (in1[i] == 'R') {
if (dir)
dir = 0;
else
dir = 1;
}
}
if (flag)
continue;
if (dir) {
cout << '[';
while (!dq.empty()) {
if (dq.size() == 1)
cout << dq.front();
else{
cout << dq.front() << ',';
}
dq.pop_front();
}
cout << "]\n";
}
else {
cout << '[';
while (!dq.empty()) {
if (dq.size() == 1)
cout << dq.back();
else {
cout << dq.back() << ',';
}
dq.pop_back();
}
cout << "]\n";
}
}
}
'Problem Solving > BOJ' 카테고리의 다른 글
[BOJ] 10773 - Zero That Out (0) | 2019.09.19 |
---|---|
[BOJ] 10828 - 스택 (0) | 2019.09.19 |
[BOJ] 1021 - 회전하는 큐 (0) | 2019.09.17 |
[BOJ] 10866 - 덱 (0) | 2019.09.17 |
[BOJ] 1966 - Printer Queue (0) | 2019.09.17 |