알고리즘/BOJ

백준 1406번 에디터

꾸준함. 2019. 1. 3. 21:30

문제 링크입니다: https://www.acmicpc.net/problem/1406


시간 제한이 0.3초 밖에 되지 않아서 스택으로 풀 수 있을지 긴가민가했지만 간단히 AC를 받을 수 있었습니다.


백준 5397번 키로거(http://jaimemin.tistory.com/824)와 비슷하게 풀면 됩니다.


#include <iostream>

#include <string>

#include <stack>

using namespace std;

 

stack<char> head, tail; //커서 왼쪽, 오른쪽

 

int main(void)

{

        ios_base::sync_with_stdio(0);

        cin.tie(0);

        string s;

        cin >> s;

 

        for (int i = 0; i < s.length(); i++)

                 head.push(s[i]);

 

        int N;

        cin >> N;

        for (int i = 0; i < N; i++)

        {

                 char op;

                 cin >> op;

 

                 //커서 왼쪽

                 if (op == 'L')

                 {

                         if (!head.empty())

                         {

                                 tail.push(head.top());

                                 head.pop();

                         }

                 }

                 //커서 오른쪽

                 else if (op == 'D')

                 {

                         if (!tail.empty())

                         {

                                 head.push(tail.top());

                                 tail.pop();

                         }

                 }

                 //커서 왼쪽 문자 삭제

                 else if (op == 'B')

                 {

                         if (!head.empty())

                                 head.pop();

                 }

                 //커서 왼쪽에 문자 추가

                 else

                 {

                         char c;

                         cin >> c;

                        

                         head.push(c);

                 }

        }

 

        while (!head.empty())

        {

                 tail.push(head.top());

                 head.pop();

        }

 

        string result;

        while (!tail.empty())

        {

                 result += tail.top();

                 tail.pop();

        }

        cout << result << "\n";

        return 0;

}


개발환경:Visual Studio 2017


지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형

'알고리즘 > BOJ' 카테고리의 다른 글

백준 16167번 A Great Way  (0) 2019.01.06
백준 1261번 알고스팟  (2) 2019.01.03
백준 2268번 수들의 합  (0) 2019.01.03
백준 2588번 곱셈  (0) 2019.01.03
백준 2740번 행렬 곱셈  (0) 2019.01.03