문제: 5430번: AC
basic-algo-lecture/workbook/0x07.md at master · encrypted-def/basic-algo-lecture
#include <map>
#include <set>
#include <cmath>
#include <queue>
#include <stack>
#include <vector>
#include <string>
#include <iostream>
#include <algorithm>
#include <iomanip> // setprecision을 사용하기 위한 헤더
#include <climits>
#include <list>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t;
cin >> t;
while (t-- > 0) {
string ops;
cin >> ops;
int n; // 배열에 들어있는 수으 ㅣ개수
cin >> n;
string nums;
cin >> nums;
deque<int> dq;
string tmp = "";
for (int i = 1; i < nums.size() - 1; i++) {
// 대괄호 제거하기 위한 범위 설정
if (nums[i] == ',') {
if (!tmp.empty()) {
dq.push_back(stoi(tmp)); // 문자열을 정수로 변환한 후 넣기
tmp = ""; // 다시 비워주깅
}
}
else
tmp += nums[i];
}
// 마지막 숫자 처리해주기
if (!tmp.empty())
dq.push_back(stoi(tmp));
bool isRight = true; // 이 값이 true 면 맨 앞에서 빼기, false 면 뒤에서 빼기
bool flag = false;
for (int i = 0; i < ops.size(); i++) {
if (ops[i] == 'R') {
isRight = !isRight;
}
else if (ops[i] == 'D') {
if (dq.empty()) {
flag = true;
break;
}
else {
if (isRight)
dq.pop_front();
else
dq.pop_back();
}
}
}
if (flag)
cout << "error" << "\n";
else {
cout << "[";
if (!dq.empty()) {
while (dq.size() > 1) {
if (isRight) {
cout << dq.front() << ",";
dq.pop_front();
}
else {
cout << dq.back() << ",";
dq.pop_back();
}
}
if (isRight)
cout << dq.front();
else
cout << dq.back();
}
cout << "]\n";
}
}
return 0;
}
졸려서 정리는 내일 해야징
참고자료:
BaaaaaaaarkingDog | [실전 알고리즘] 0x07강 - 덱