백준 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;
}
어쩌면 훨씬 간단하고 좋은 파이썬 함수가 있을지도 모릅니다.