백준 알고리즘 5430번 : AC

Zoo Da·2022년 2월 26일
0

백준 알고리즘

목록 보기
331/337
post-thumbnail

링크

https://www.acmicpc.net/problem/5430

sol1) 덱 + 파싱

#pragma GCC target("avx,avx2,fma")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#include <bits/stdc++.h>
#include <ext/rope>
#define fastio ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)
using namespace std;
using namespace __gnu_cxx;

#define X first
#define Y second
#define int int64_t
#define sz(v) (int)(v).size()
#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()
#define Compress(v) sort(all(v)), (v).erase(unique(all(v)), (v).end())
#define OOB(x, y) ((x) < 0 || (x) >= n || (y) < 0 || (y) >= m)
#define IDX(v, x) (lower_bound(all(v), x) - (v).begin())
#define debug(x) cout << (#x) << ": " << (x) << '\n'

using ll = long long;
using ull = unsigned long long;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
using tii = tuple<int, int, int>;
template <typename T>
using wector = vector<vector<T>>;

vector<int> Parsing(string& s){
	const int sz = s.size();
	for(int i = 0; i < sz; i++){
		if(s[i] == ',' || s[i] == '[') s[i] = ' ';
	}
	vector<int> ret;
	stringstream in(s);
	int temp;
	while(in >> temp) ret.push_back(temp);
	return ret;
}

void Print(const deque<int>& DQ){
	cout << '[';
	for(int i = 0; i < DQ.size(); i++){
		cout << DQ[i];
		if(i != DQ.size() - 1) cout << ',';
	}
	cout << "]\n";
}

void Sol(){
	string p,s;
	int n;
	cin >> p >> n >> s;
	auto arr = Parsing(s);
	deque<int> DQ;
	bool isReverse = false;
	for(int i = 0; i < arr.size(); i++) DQ.push_back(arr[i]);
	for(int i = 0; i < p.size(); i++){
		if(p[i] == 'R'){
			// reverse
			isReverse = !isReverse;
		}
		else{
			if(DQ.empty()){
				cout << "error" << "\n";
				return;
			}
			else{
				isReverse ? DQ.pop_back() : DQ.pop_front();
			}
		}
	}
	if(isReverse) reverse(all(DQ));
	Print(DQ);
}

int32_t main(){
	fastio;
	int t; cin >> t;
	while(t--){
		Sol();	
	}
}
profile
메모장 겸 블로그

0개의 댓글