#include <iostream>
#include <deque>
#include <string>
#include <algorithm>
 
int main()
{
    int T = 0;
    std::cin >> T;
 
    for (int i = 0; i < T; ++i)
    {
        std::string s = {};
        std::cin >> s;
 
        int iSize = 0;
        std::cin >> iSize;
 
        std::string sVec = {};
        std::cin >> sVec;
 
        std::deque<int> deque = {};
        std::string sNumber = {};
 
        for (int j = 1; j < sVec.size(); ++j)
        {
            if (sVec[j] == ',' || sVec[j] == ']')
            {
                if (!sNumber.empty())
                {
                    deque.push_back(stoi(sNumber));
                }
 
                sNumber = "";
            }
 
            else
            {
                sNumber += sVec[j];
            }
        }
 
        bool bReverse = false;
        bool bSuc = true;
        for (int j = 0; j < s.size(); ++j)
        {
            if (s[j] == 'R')
            {
                bReverse = !bReverse;
            }
 
            else 
            {
                if (deque.empty())
                {
                    std::cout << "error\n";
                    bSuc = false;
                    break;
                }
 
                else
                {
                    if (bReverse)
                    {
                        deque.pop_back();
                    }
 
                    else
                    {
                        deque.pop_front();
                    }
                }
            }
        }
 
        if (!bSuc)
            continue;
 
        sVec = "[";
 
        if (!bReverse)
        {
            for (int j = 0; j < deque.size(); ++j)
            {
                sVec += std::to_string(deque[j]);
 
                if (deque.size() - 1 != j)
                    sVec += ',';
            }
        }
 
        else
        {
            for (int j = deque.size() - 1; j >= 0; --j)
            {
                sVec += std::to_string(deque[j]);
 
                if (j)
                    sVec += ',';
            }
        }
 
        sVec += ']';
 
 
        std::cout << sVec << "\n";
    }
 
    return 0;
}

앞뒤로 전부 빼야하는데 리버스하기엔 복잡할 것 같아서 deque로 만들었습니다.

R일 경우 bool 값을 줘서 앞뒤 빼거나 순서를 바꿨습니다.

처음엔 vec를 empty인가 확인해서 풀었더니 하나도 없을 경우 아무것도 출력을 안하고 끝내서 틀렸습니다.

bool값을 하나 더 넣어서 성공인지 실패인지 확인하는 것도 입력해놓았고 성공했습니다.

'오늘의 알고리즘' 카테고리의 다른 글

[C++] 백준 6064 카잉달력  (0) 2022.09.15
[C++] 백준 5545 IOIOI  (0) 2022.09.14
[C++] 백준 1992 쿼드트리  (0) 2022.09.12
[C++] 백준 11726 2xn 타일링  (0) 2022.09.10
[C++] 백준11279 최대 힙  (0) 2022.09.07

+ Recent posts