티스토리 뷰

알고리즘/자료구조

BOJ)1406 에디터

광그로 2017. 6. 19. 21:07

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


linkedlist로 풀 수도 있고, stack으로도 풀 수 있는 문제입니다.

저는 stack으로 풀 수 있다는 걸 인지하는 데에 약간의 시간이 필요했습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
#include <stack>
#include <cstring>
using namespace std;
 
stack<char> left_stack;
stack<char> right_stack;
 
int main()
{
    char str[100001];
    cin >> str;
    for (int i = 0; i < strlen(str); i++) {
        left_stack.push(str[i]);
    }
    int test;
    cin >> test;
    char a, b;
    char tmp;
 
    while (test--) {
        cin >> a;
        switch (a) {
        case 'L':
            if (!left_stack.empty()) {
                tmp = left_stack.top(); left_stack.pop();
                right_stack.push(tmp);
            }
            break;
        case 'D':
            if (!right_stack.empty()) {
                tmp = right_stack.top(); right_stack.pop();
                left_stack.push(tmp);
            }
            break;
        case 'B':
            if(!left_stack.empty()) left_stack.pop();
            break;
        case 'P':
            cin >> b;
            left_stack.push(b);
            break;
        }
    }
    memset(str, NULL , strlen(str));
    int index = left_stack.size()-1;
    str[index + 1= '\0';
    while (!left_stack.empty()) {
        tmp = left_stack.top(); left_stack.pop();
        str[index--= tmp;
    }
    cout << str;
    while (!right_stack.empty()) {
        cout << right_stack.top(); right_stack.pop();
    }
}
cs


'알고리즘 > 자료구조' 카테고리의 다른 글

BOJ)10820 문자열 분석  (0) 2017.06.20
BOJ)1158 조세퍼스 문제  (0) 2017.06.20
BOJ)10866 덱(deque)  (0) 2017.06.20
BOJ)10799 쇠막대기  (0) 2017.06.19
BOJ)9012 괄호  (0) 2017.06.19
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함