득이공간
[백준 C++] 5430 AC - 덱 본문
#include <iostream>
#include <string>
#include <deque>
using namespace std;
deque<int> Sequence;
void Test()
{
int N;
string P, Input;
cin >> P >> N >> Input;
int Prev = 1;
int Next = Input.find(',');
while (Next != string::npos)
{
string Sub = Input.substr(Prev, Next - Prev);
Sequence.push_back(stoi(Sub));
Prev = Next + 1;
Next = Input.find(',', Prev);
}
string Sub = Input.substr(Prev, Input.size() - 1);
if (N != 0)
{
Sequence.push_back(stoi(Sub));
}
bool Reverse = false;
for (int i = 0; i < P.size(); ++i)
{
switch (P[i])
{
case 'R':
Reverse = !Reverse;
break;
case 'D':
if (Sequence.empty())
{
cout << "error\n";
return;
}
if (!Reverse)
{
Sequence.pop_front();
}
else
{
Sequence.pop_back();
}
break;
}
}
cout << '[';
while (!Sequence.empty())
{
if (!Reverse)
{
cout << Sequence.front();
Sequence.pop_front();
}
else
{
cout << Sequence.back();
Sequence.pop_back();
}
if (Sequence.size() != 0)
{
cout << ',';
}
}
cout << "]\n";
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
int T;
cin >> T;
for (int i = 0; i < T; ++i)
{
Test();
}
}
deque와 문자열 파싱을 이용해서 푸는 문제입니다.
R을 입력받았을 때 Reverse 여부를 bool 값으로 관리해서
Reverse 값이 참이면 뒤에서부터 D 연산, 출력 연산을 하도록 하고
Reverse 값이 거짓이면 앞에서부터 D 연산과 출력 연산을 수행하도록 했습니다.
'PS > 알고리즘 문제풀이' 카테고리의 다른 글
[백준 C++] 7662 이중 우선순위 큐 - 우선순위큐 (0) | 2024.02.18 |
---|---|
[백준 C++] 7569 토마토 - 너비우선탐색 (0) | 2024.02.17 |
[백준 C++] 1107 리모컨 - 브루트포스 (0) | 2024.02.17 |
[백준 C++] 20529 가장 가까운 세 사람의 심리적 거리 - 브루트포스 (0) | 2024.02.17 |
[백준 C++] 11286 절대값 힙 - 우선순위큐 (0) | 2024.02.17 |