문제
https://www.acmicpc.net/problem/5430
걸린 시간
01 : 34 : 58
풀이
C++
#include <bits/stdc++.h>
#define INF 987654321
using namespace std;
string ac(string p, deque<string>& dq){
bool reverse = false;
for(int i = 0; i < p.size(); i++)
if(p[i] == 'R')
reverse = !reverse;
else if(p[i] == 'D')
if(!reverse)
if(!dq.empty())
dq.pop_front();
else
return "error";
else
if(!dq.empty())
dq.pop_back();
else
return "error";
string ans;
ans.push_back('[');
if(dq.size() != 0){
if(!reverse){
for(int i = 0; i < dq.size()-1; i++){
ans += dq[i];
ans.push_back(',');
}
ans += dq[dq.size()-1];
}
else{
for(int i = dq.size()-1; i > 0; i--){
ans += dq[i];
ans.push_back(',');
}
ans += dq[0];
}
}
ans.push_back(']');
return ans;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
int tc;
cin >> tc;
while(tc--){
string p; // 수행할 함수
cin >> p;
int n; // 수의 개수
cin >> n;
string x; // 배열에 들어있는 수
cin >> x;
deque<string> dq;
string tmp;
for(int i = 0; i < x.size(); i++){
if(x[i] == ','){
dq.push_back(tmp);
tmp.clear();
}
else if(x[i] == '[' or x[i] == ']')
continue;
else
tmp.push_back(x[i]);
}
if(tmp.size() != 0)
dq.push_back(tmp);
// 함수 수행
cout << ac(p, dq) << "\n";
}
return 0;
}
문제의 입출력 형태가 정말 귀찮게 주어진다.
자료형을 전체적으로 3번 넘게 바꾸어가며 오류와 씨름을 한시간 정도 한 것 같다.
'Baekjoon' 카테고리의 다른 글
Baekjoon 1676번 팩토리얼 0의 개수 (0) | 2020.08.28 |
---|---|
Baekjoon 1780번 종이의 개수 (0) | 2020.08.28 |
Baekjoon 1541번 잃어버린 괄호 (0) | 2020.08.27 |
Baekjoon 11286번 절댓값 힙 (0) | 2020.08.27 |
Baekjoon 1992번 쿼드트리 (0) | 2020.08.27 |
댓글