- 문제 링크 : boj.kr/5430
- 난이도 : G5
- 태그 : 덱, 구현, 파싱
코드
#include <bits/stdc++.h>
#define all(x) (x).begin(), (x).end()
#define INF 0x7FFFFFFF
using namespace std;
using ll = long long;
using ld = long double;
using pii = pair<int,int>;
using pll = pair<ll, ll>;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int T;
cin >> T;
while(T--) {
string s;
cin >> s;
int n;
cin >> n;
char c;
cin >> c;
deque<int> arr(n);
for(int i = 0; i < n; i++) {
cin >> arr[i];
cin >> c;
}
if(n == 0) cin >> c;
int r = 0;
bool flag = false;
for(auto u : s) {
if(u == 'D') {
if(arr.empty()) {
flag = true;
break;
}
if(r) arr.pop_back();
else arr.pop_front();
}
else {
r = !r;
}
}
if(flag) {
cout << "error\n";
continue;
}
if(arr.size() == 0) {
cout << "[]\n";
continue;
}
cout << "[";
if(r) {
reverse(all(arr));
}
for(int i = 0; i < arr.size()-1; i++) {
cout << arr[i] << ",";
}
cout << arr[arr.size()-1];
cout << "]\n";
}
return 0;
}
풀이
덱을 이용하는 단순 구현 문제이지만 파싱과정에서 실수할 부분이 많다.
파싱을 실수할 것 같다면 한 줄을 그대로 받아놓고 대괄호를 제거한 뒤 ','를 기준으로 slice하는 방법도 있다.
'PS' 카테고리의 다른 글
BOJ 7775 : 최종 순위 (1) | 2024.03.25 |
---|---|
BOJ 15551 : if 3 (0) | 2024.03.24 |
BOJ 7569 : 토마토 (0) | 2024.03.22 |
BOJ 7576 : 토마토 (0) | 2024.03.21 |
BOJ 30961 : 최솟값, 최댓값 (0) | 2024.03.20 |