https://www.acmicpc.net/problem/5430
문자열 관리도 해주고,,, deque도 써주는 문제였다.
deque 사용 난이도는 낮고, 문자열 관리하는 것이 힘들었다.
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <string>
#include <map>
#include <limits.h>
#include <queue>
#include <set>
#include <math.h>
#include <stack>
#include <deque>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t;
cin >> t;
string sentence;
// 배열이 담겨있는 문자열
string input_arr;
while (t--) {
cin >> sentence;
bool is_pop_front = true;
// deque 사이즈가 0 이하 일 때 플래그
bool flag = true;
int dq_size;
deque<int> dq;
// 사이즈 입력 받기
cin >> dq_size;
// 배열 문자열 입력 받기
cin >> input_arr;
string temp;
// 파싱하기([랑 ] 빼고)
// , 만나기 전까지 temp에 쌓기
// , 만나면 dq.push, count
// 마무리 조건은 i = input_arr -2 일 때 temp값 push 해주기
if (dq_size != 0) {
for (int i = 1; i < input_arr.size() - 1; i++) {
if (input_arr[i] == ',') {
dq.push_back(stoi(temp));
temp = "";
}
else {
temp += input_arr[i];
}
if (i == input_arr.size() - 2) {
dq.push_back(stoi(temp));
}
}
}
for (int i = 0; i < sentence.size(); i++) {
if (sentence[i] == 'R') {
is_pop_front = !is_pop_front;
continue;
}
if (dq.empty()) {
flag = false;
break;
}
if (is_pop_front) {
dq.pop_front();
}
else {
dq.pop_back();
}
}
if (!flag) {
cout << "error" << '\n';
}
else {
cout << '[';
if (is_pop_front) {
while (!dq.empty()) {
if (dq.size() != 1) {
cout << dq.front() << ',';
}
else {
cout << dq.front();
}
dq.pop_front();
}
}
else {
while (!dq.empty()) {
if (dq.size() != 1) {
cout << dq.back() << ',';
}
else {
cout << dq.back();
}
dq.pop_back();
}
}
cout << "]\n";
}
}
return 0;
}
'PS > BOJ' 카테고리의 다른 글
[백준] 4949. 균형잡힌 세상(c++) (0) | 2025.02.10 |
---|---|
[백준] 11003. 최솟값 찾기(c++) (0) | 2025.02.05 |
[백준] 1021. 회전하는 큐(c++) (0) | 2025.02.05 |
[백준] 10866. 덱(c++) (0) | 2025.02.05 |
[백준] 2164. 카드2(c++) (0) | 2025.02.04 |