본문 바로가기

개발/알고리즘 & 자료구조

백준(BOJ) 1406번 에디터

반응형
#include<iostream>
#include<stack>
#include<string>
using namespace std;
 
int main()
{
    string str;
    cin >> str;
 
    stack<char>left;
    stack<char>right;
 
    //right에 str복사
    for (int i = 0; i < str.size(); i++)
    {
        left.push(str[i]);
    }
    
    int t;
    cin >> t;
 
    //명령어 입력
    for (int i = 0; i < t; i++)
    {
        char order;
        cin >> order;
 
        if (order == 'L' && !left.empty())
        {
            right.push(left.top());
            left.pop();
        }
        if (order == 'D' && !right.empty())
        {
            left.push(right.top());
            right.pop();
        }
        if (order == 'B'&& !left.empty())
        {
            left.pop();
        }
        if (order == 'P')
        {
            char addchar;
            cin >> addchar;
            left.push(addchar);
        }
    }
 
    //left->right복사 및 right전체 출력
    while(!left.empty())
    {
        right.push(left.top());
        left.pop();
    }
    while (!right.empty())
    {
        cout << right.top();
        right.pop();
    }
    cout << endl;
 
    return 0;
}

STL stack을 이용하여 커서의 왼쪽을 left스택, 오른쪽을 right스택으로 

두고 구현하였습니다.

반응형