> [!date] published: 2022-04-02
[5430๋ฒ: AC](https://www.acmicpc.net/problem/5430)
## ๐ ๋ฌธ์
์ ์์ด๋ ์ฃผ๋ง์ ํ ์ผ์ด ์์ด์ ์๋ก์ด ์ธ์ด AC๋ฅผ ๋ง๋ค์๋ค. AC๋ ์ ์ ๋ฐฐ์ด์ ์ฐ์ฐ์ ํ๊ธฐ ์ํด ๋ง๋ ์ธ์ด์ด๋ค. ์ด ์ธ์ด์๋ ๋ ๊ฐ์ง ํจ์ R(๋ค์ง๊ธฐ)๊ณผ D(๋ฒ๋ฆฌ๊ธฐ)๊ฐ ์๋ค.
ํจ์ R์ ๋ฐฐ์ด์ ์๋ ์์ ์์๋ฅผ ๋ค์ง๋ ํจ์์ด๊ณ , D๋ ์ฒซ ๋ฒ์งธ ์๋ฅผ ๋ฒ๋ฆฌ๋ ํจ์์ด๋ค. ๋ฐฐ์ด์ด ๋น์ด์๋๋ฐ D๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ์๋ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
ํจ์๋ ์กฐํฉํด์ ํ ๋ฒ์ ์ฌ์ฉํ ์ ์๋ค. ์๋ฅผ ๋ค์ด, "AB"๋ A๋ฅผ ์ํํ ๋ค์์ ๋ฐ๋ก ์ด์ด์ B๋ฅผ ์ํํ๋ ํจ์์ด๋ค. ์๋ฅผ ๋ค์ด, "RDD"๋ ๋ฐฐ์ด์ ๋ค์ง์ ๋ค์ ์ฒ์ ๋ ์๋ฅผ ๋ฒ๋ฆฌ๋ ํจ์์ด๋ค.
๋ฐฐ์ด์ ์ด๊ธฐ๊ฐ๊ณผ ์ํํ ํจ์๊ฐ ์ฃผ์ด์ก์ ๋, ์ต์ข
๊ฒฐ๊ณผ๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
## ๐ ์
๋ ฅ
์ฒซ์งธ ์ค์ ํ
์คํธ ์ผ์ด์ค์ ๊ฐ์ T๊ฐ ์ฃผ์ด์ง๋ค. T๋ ์ต๋ 100์ด๋ค.
๊ฐ ํ
์คํธ ์ผ์ด์ค์ ์ฒซ์งธ ์ค์๋ ์ํํ ํจ์ p๊ฐ ์ฃผ์ด์ง๋ค. p์ ๊ธธ์ด๋ 1๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 100,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค.
๋ค์ ์ค์๋ ๋ฐฐ์ด์ ๋ค์ด์๋ ์์ ๊ฐ์ n์ด ์ฃผ์ด์ง๋ค. (0 โค n โค 100,000)
๋ค์ ์ค์๋ \[x<sub>1</sub>,...,x<sub>n</sub>\]๊ณผ ๊ฐ์ ํํ๋ก ๋ฐฐ์ด์ ๋ค์ด์๋ ์ ์๊ฐ ์ฃผ์ด์ง๋ค. (1 โค x<sub>i</sub> โค 100)
์ ์ฒด ํ
์คํธ ์ผ์ด์ค์ ์ฃผ์ด์ง๋ p์ ๊ธธ์ด์ ํฉ๊ณผ n์ ํฉ์ 70๋ง์ ๋์ง ์๋๋ค.
## ๐ ์ถ๋ ฅ
๊ฐ ํ
์คํธ ์ผ์ด์ค์ ๋ํด์, ์
๋ ฅ์ผ๋ก ์ฃผ์ด์ง ์ ์ ๋ฐฐ์ด์ ํจ์๋ฅผ ์ํํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค. ๋ง์ฝ, ์๋ฌ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ์๋ error๋ฅผ ์ถ๋ ฅํ๋ค.
## ๐ ํ์ด
์ด ๋ฌธ์ ์์ ์ค์ํ ๋ถ๋ถ์ ์์๋ฅผ ์ด๋ฆฌ์ ๋ฆฌ ๋ฐ๊พธ๋ ๋ฐฐ์ด์ ๋ค๋ฃจ๋ ๋ถ๋ถ๊ณผ, ๋ฌธ์์ด ํ์ฑํ๋ ๋ถ๋ถ์ธ ๊ฒ ๊ฐ๋ค.
์ด๋ฆฌ์ ๋ฆฌ ์์๋ฅผ ๋ฐ๊พธ๊ณ , ๋ฐ๋ ์์์ ๋ฐ๋ผ์ ์๋ค๋ก ์์๋ฅผ ๋ฐ๊ฟ ์ ์์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์์๋ deque๋ฅผ ์ด์ฉํ์ฌ ์ ์ฅํ๋ค. ๊ทธ๋ฆฌ๊ณ `front_op` ๋ณ์๋ฅผ ์ด์ฉํด์ 1์ผ๋๋ front๋ฅผ ์์ผ๋ก ํ๊ณ , -1์ผ๋๋ back์ ์์ผ๋ก ํ๋๋ก ์ค์ ํ๋ค. ์ถ๋ ฅํ๋ ๋ถ๋ถ ์ญ์ `front_op` ๋ณ์์ ๊ฐ์ ์ด์ฉํ์ฌ frontํน์ back๋ถํฐ ์ถ๋ ฅํด์คฌ๋ค.
๋ฐฐ์ด์ด ์
๋ ฅ๋ ๋ ๋จ์ํ ์ซ์๋ง ์
๋ ฅ๋๋ ๊ฒ์ด ์๋๋ผ '\['์ ']', ','๊ฐ ๊ฐ์ด ์
๋ ฅ๋๊ธฐ ๋๋ฌธ์ string ํํ๋ก ์
๋ ฅ์ ๋ฐ์์ ์ซ์๋ถ๋ถ๋ง ์๋ผ๋ด๋ ๋ฌธ์์ด ํ์ฑ ์์
์ด ํ์ํ๋ค. ์
๋ ฅ๋ฐ์ ๋ฌธ์์ด์ ์ฒ์๋ถํฐ ๋๋ฉด์, ์ฒ์ ์ซ์๊ฐ ๋ฑ์ฅํ๋ ๋ถ๋ถ๋ถํฐ ์ซ์๊ฐ ์๋ ๋ถ๋ถ๊น์ง์ ๊ธธ์ด๋ฅผ ๊ตฌํ์ฌ `substr`์ ์ด์ฉํ์ฌ ์ํ๋ ๊ธธ์ด๋งํผ ์๋ผ๋ธ ๋ค์์ ์ซ์๋ก ๋ณํํด์ฃผ๋ ๋ฐฉ๋ฒ์ผ๋ก ์์๋ค์ deque์ ๋ฃ์ด ์ฃผ์๋ค. (์ฝ๋๋ฅผ ๋ณด๋ ๊ฒ ๋ ์ค๋ช
์ด ์ ๋ ๋ฏ ํ๋ค. (`make_deque` ํจ์))
์ด๋ ๊ฒ ๋ง๋ ๋ฐฐ์ด์ ์
๋ ฅ๋ ๋ช
๋ น์ด๋๋ก ์์๋ฅผ ๋ฐ๊พธ๊ณ (R) ์์๋ฅผ ์ญ์ ํ๊ณ (D) ๊ทธ ๋ค์ ๋ฌธ์ ์์ ์๊ตฌํ๋ ํ์๋๋ก ์ถ๋ ฅ์ ํด ์ฃผ๋ฉด ๋๋ค. ๋๋ ์ด ๋ถ๋ถ์์ ์๊พธ ๋ฐํ์ ์๋ฌ๊ฐ ๋ฌ์๋๋ฐ... ๋ง์ฝ์ ๋ช
๋ น์ด๋ฅผ ๋ชจ๋ ์ํํ ๋ค์ deque๊ฐ ๋น์ด ์๋ค๋ฉด `[]` ๋ฅผ ์ถ๋ ฅํด์ฃผ๋ฉด ๋๋ค. ๋ด๊ฐ ๊ธฐ์กด์ ์ง ์ถ๋ ฅํจ์์์๋ ์์๊ฐ ์ ์ด๋ 1๊ฐ๋ ์์ด์ผ ์ถ๋ ฅ์ด ์ ์์ ์ผ๋ก ๋๊ฒ ํ์๊ธฐ ๋๋ฌธ์... deque๊ฐ ๋น์ด์์ ๊ฒฝ์ฐ๋ฅผ ๋ฐ๋ก ์ฒ๋ฆฌํด์ ์ค๋ฅ๋ฅผ ํด๊ฒฐํด์ฃผ์๋ค.
## ๐ ์ฝ๋
```cpp
/*
2022-4-2
5430_AC
https://www.acmicpc.net/problem/5430
*/
#include <iostream>
#include <string>
#include <deque>
using namespace std;
deque<int> q;
void make_deque(int n, string x)
{
int i, j;
i = 1;
while(!q.empty())
q.pop_front();
while (q.size() < n)
{
if (x[i] >= '0' && x[i] <= '9')
{
j = i + 1;
while (x[j] >= '0' && x[j] <= '9' && j < x.length())
j++;
q.push_back(stoi(x.substr(i, j-i)));
i = j;
}
i++;
}
}
int do_ac(string p)
{
int front_op = 1; // 1: ์ ๋ฐฉํฅ, -1: ์ญ๋ฐฉํฅ
for(int i = 0; i < p.length(); i++)
{
if (p[i] == 'R')
front_op *= -1;
else
{
if (q.empty())
{
cout << "error\n";
return (0);
}
else if (front_op == 1)
q.pop_front();
else
q.pop_back();
}
}
return (front_op);
}
void print_deque(int front_op)
{
cout << '[';
if (q.empty())
{
cout << "]\n";
return ;
}
if (front_op == 1)
{
while (q.size() > 1)
{
cout << q.front() << ',';
q.pop_front();
}
cout << q.front() << "]\n";
q.pop_front();
}
else
{
while (q.size() > 1)
{
cout << q.back() << ',';
q.pop_back();
}
cout << q.back() << "]\n";
q.pop_back();
}
}
void AC()
{
string p, x;
int n, front_op;
cin >> p;
cin >> n;
cin >> x;
make_deque(n, x);
front_op = do_ac(p);
if (front_op == 0)
return ;
print_deque(front_op);
}
int main()
{
int t;
cin >> t;
for(int i = 0; i < t; i++)
AC();
return (0);
}
```