백준 5430 AC C++ 풀이
[문제 링크]
https://www.acmicpc.net/problem/5430
[입출력 예]
입력 | 출력 |
---|---|
4 RDD 4 [1,2,3,4] DD 1 [42] RRD 6 [1,1,2,3,5,8] D 0 [] |
[2,1] error [1,2,3,5,8] error |
[소스코드]
#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
void push_DQ(string arr, deque<int> &DQ)
{
string tmp = "";
for (int i = 0; i < arr.length(); i++)
{
if ('0' <= arr[i] && arr[i] <= '9')
{
tmp += arr[i];
}
if (arr[i] == ',' || arr[i] == ']')
{
if (tmp.compare("") != 0)
DQ.push_back(stoi(tmp));
tmp = "";
}
}
}
void print_DQ(deque<int> DQ, bool reversed)
{
cout << "[";
if (!reversed)
{
while (!DQ.empty())
{
cout << DQ.front();
DQ.pop_front();
if (!DQ.empty())
cout << ",";
}
}
else
{
while (!DQ.empty())
{
cout << DQ.back();
DQ.pop_back();
if (!DQ.empty())
cout << ",";
}
}
cout << "]" << endl;
}
int main()
{
int T;
cin >> T;
string cmd, arr;
int arrLen;
deque<int> DQ;
while (T--)
{
cin >> cmd;
cin >> arrLen;
cin >> arr;
bool reversed = false;
bool error = false;
push_DQ(arr, DQ);
for (int i = 0; i < cmd.length(); i++)
{
if (cmd[i] == 'R')
{
reversed = !reversed;
}
if (cmd[i] == 'D')
{
if (DQ.empty())
{
error = true;
break;
}
else if (!reversed)
{
DQ.pop_front();
}
else if (reversed)
{
DQ.pop_back();
}
}
}
if (error)
{
cout << "error" << endl;
}
else
{
print_DQ(DQ, reversed);
}
DQ.clear();
}
return 0;
}
'PS > BOJ' 카테고리의 다른 글
백준 1629 곱셈 C++ (0) | 2022.02.08 |
---|---|
백준 1926 그림 C++ (0) | 2022.02.06 |
BOJ 1021 회전하는 큐 C++ (0) | 2022.02.02 |
백준 2164 카드2 c++ (0) | 2022.02.01 |
백준 10845 큐,큐2 c++ (0) | 2022.02.01 |
댓글
이 글 공유하기
다른 글
-
백준 1629 곱셈 C++
백준 1629 곱셈 C++
2022.02.08 -
백준 1926 그림 C++
백준 1926 그림 C++
2022.02.06 -
BOJ 1021 회전하는 큐 C++
BOJ 1021 회전하는 큐 C++
2022.02.02 -
백준 2164 카드2 c++
백준 2164 카드2 c++
2022.02.01