daisy0461 2024. 5. 30. 23:46

https://www.acmicpc.net/problem/5430

이 문제 쉬웠는데 억울한 문제였다.

코드 제일 마지막 부분에 cout << "\n"; 이 있는데 이게 없으면 아예 틀렸다고 나온다.

이거 때문에 헤맸다.

출력과 관련해서 한 줄을 띄워야한다던데 명확한 기준이 있었으면 좋았을거 같다.

#include <iostream>
#include <deque>
#include <string>
#include <algorithm>

using namespace std;

int testCase;
deque<int> d;
string ACS, arrString;
int arrCount;

int main()
{
	ios_base::sync_with_stdio();
	cin.tie(0); cout.tie(0);

	cin >> testCase;

	for (int t = 0; t < testCase; t++) {
		d.clear();
		cin >> ACS;
		cin >> arrCount;
		cin >> arrString;
		int num=0;
		for (int i = 0; i < arrString.size(); i++) {		//deque에 숫자 넣기
			if (arrString[i] == '[' || arrString[i] == ']') continue;
			if (arrString[i] == ',') {
				d.push_back(num);
				num = 0;
			}
			else {
				num = num * 10 + arrString[i] - '0';
			}
		}

		if (num != 0) {
			d.push_back(num);
		}


		bool isError = false, isReverse = false;
		for (int i = 0; i < ACS.size(); i++) {
			if (ACS[i] == 'R') {
				if (isReverse) isReverse = false;
				else isReverse = true;
			}
			else if(ACS[i] == 'D') {		//D
				if (d.empty()) {
					isError = true;
					break;
				}

				if (isReverse) {
					d.pop_back();
				}
				else {
					d.pop_front();
				}
			}
		}

		if (isReverse && !isError) {
			reverse(d.begin(), d.end());
		}

		if (isError) {
			cout << "error";
		}
		else {
			cout << "[";
			for (int i = 0; i < d.size(); i++) {				
				if (i == d.size() - 1) {
					cout << d[i];
				}
				else {
					cout << d[i] << ",";
				}	
			}
			cout << "]";
		}
		cout << "\n";
	}
}