백준 5430 AC

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

입력과 출력이 파이썬 처럼 생겼지만 실제로 파이썬과 정확히 일치하는 것도 아닌 것 같습니다… 띄어쓰기가 없으니까요. 구현의 왕 느낌이네요.

결국 cpp로 짰습니다. n이 0인 경우 처리를 위하여 구간을 [0,n)으로 잡는 것만 처리하면 깔끔하게 되겠네요.

#include<bits/stdc++.h>
#define pb push_back
using namespace std;
vector<string> split(string lst){
	vector<string> tmp;
	string xx="";
	for(int i=1;i<(int)lst.size();i++){
		if(lst[i]==',' || lst[i]==']'){
			tmp.pb(xx);
			xx="";
		}
		else xx+=lst[i];
	}
	return tmp;
}
int main(void){
	ios::sync_with_stdio(false); cin.tie(NULL);
	int q; cin>>q;
	while(q--){
		string s; cin>>s;
		int n; cin>>n;
		string lst; cin>>lst;
		vector<string> arr=split(lst);
		bool err=false;
		int l=0,r=n; bool lr=true;
		for(char x:s){
			if(x=='R') lr=!lr;
			else if(x=='D'){
				if(lr) l++;
				else r--;
			}
			if(l>r){
				err=true;
				cout<<"error"<<'\n';
				break;
			}
		}
		if(err) continue;
		if(lr){
			cout<<"[";
			for(int i=l;i<r;i++){
				cout<<arr[i];
				if(i!=r-1) cout<<',';
			}
			cout<<"]"<<'\n';
		}
		else{
			cout<<"[";
			for(int i=r-1;i>=l;i--){
				cout<<arr[i];
				if(i!=l) cout<<',';
			}
			cout<<"]"<<'\n';			
		}
	}
	return 0;
}

어쩌면 훨씬 간단하고 좋은 파이썬 함수가 있을지도 모릅니다.