기억보다는 기록을 해볼까

백준으로 C++ 공부 25일차 (5430) 본문

백준으로 C++ 공부하기

백준으로 C++ 공부 25일차 (5430)

옥상에서 2021. 12. 6. 20:48
728x90

하.. 한문제 골치 아프게 계속 안풀렸다.

오늘 공부한 백준 : 5430 AC

 

 

 

#include <iostream>
#include <deque>
#include <string>
using namespace std;

int main() {
    int T; cin >> T;

    while(T--) {
        deque<int> dq;
        string str; cin >> str;
        int n; cin >> n;
        string arr; cin >> arr;
        bool right = true;
        bool end = false;
        for(int i = 0 ; i < arr.size(); i++) {
            if(arr[i] == '[' || arr[i] == ',' || arr[i] == ']') continue;
            int num = arr[i] - '0';
            while(arr[i + 1] != ',' && arr[i + 1] != ']') {
                num += arr[i + 1];
                i++;
            }
            dq.push_front(num);
        }

        for(int i = 0; i < str.size(); i++) {
            if(str[i] == 'R') {
                if(right == true) {
                    right = false;
                }
                else right = true;
            }
            else if(str[i] == 'D') {
                if(right == true) {
                    if(dq.empty()) {
                        cout << "error" << "\n";
                        dq = deque<int>();
                        end = true;
                        break;
                    }
                    else {
                        dq.pop_back();
                    }
                }
                else {
                    if(dq.empty()) {
                        cout << "error" << "\n";
                        dq = deque<int>();
                        end = true;
                        break;
                    }
                    else {
                        dq.pop_front();
                    }
                }
            }
        }
        if(end == true) continue;
        else {
            cout << "[";
            if(dq.empty()) {
                cout << "]";
                continue;
            }
            if(right == true) {
                int a = dq.size();
                for(int i = 0; i < a - 1; i++) {
                    cout << dq.back() << ",";
                    dq.pop_back();
                }
                cout << dq.back();
                cout << "]";
            }
            else {
                int a = dq.size();
                for(int i = 0; i < a - 1; i++) {
                    cout << dq.front() << ",";
                    dq.pop_front();
                }
                cout << dq.front();
                cout << "]";
            }
        }
        cout << "\n";
    }
}
728x90
Comments