PS
BOJ 5430 : AC
lickelon
2024. 3. 23. 22:42
- 문제 링크 : boj.kr/5430
- 난이도 : G5
- 태그 : 덱, 구현, 파싱
5430번: AC
각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다.
www.acmicpc.net
코드
#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하는 방법도 있다.
728x90