https://www.acmicpc.net/problem/5430
string을 다루는 능력을 길러주는 문제이다. 나는 deque를 사용하여 R이 들어올 경우 flag을 사용하여 pop_front()를 할지 pop_back()을 할지 결정하였다. 주의 할 점은 입력받는 배열을 크기가 0인 경우에도 내 코드는 ""이 들어가기 때문에 예외 처리를 해줘야 한다는 것이다.
#include <iostream>
#include <deque>
#include <queue>
#include <string>
using namespace std;
int main(){
cin.tie(0); cout.tie(0); ios::sync_with_stdio(0);
int T; cin>>T;
while(T--){
string command,input; int size;
cin>>command>>size>>input;
deque<string> dq;
string tmp="";
for(int i=0;i<input.size();i++){
if('0'<=input[i]&&input[i]<='9') tmp+=input[i];
if(input[i]==','||input[i]==']'){
dq.push_back(tmp);
tmp="";
}
}
bool back=false;
bool flag_e=false;
for(int i=0;i<command.size();i++){
if(command[i]=='R'){
if(back) back=false;
else back=true;
}else{
//입력받는 배열을 크기가 0일 경우 예외 처리를 해줘야 한다.
if(dq.size()==0||dq.front()==""){
flag_e=true;
break;
}
if(back) dq.pop_back();
else dq.pop_front();
}
}
if(flag_e){
cout<<"error\n";
}else{
cout<<'[';
while(!dq.empty()){
if(back){
cout<<dq.back();
dq.pop_back();
}else{
cout<<dq.front();
dq.pop_front();
}
if(dq.size()!=0) cout<<',';
}
cout<<"]\n";
}
}
return 0;
}
'백준 > String' 카테고리의 다른 글
[BOJ] 2154 수 이어 쓰기 3 (0) | 2021.09.07 |
---|---|
[BOJ] 1748 수 이어 쓰기 1 (0) | 2021.09.07 |
[BOJ] 1515 수 이어 쓰기 (0) | 2021.09.06 |
[BOJ] 1316 그룹 단어 체커 (0) | 2021.09.06 |
[BOJ] 22232 가희와 파일 탐색기 (0) | 2021.08.30 |