백준 알고리즘 10866번 - 덱

2019. 5. 3. 14:16프로그래밍/백준 알고리즘

덱을 구현하면 되는 문제였다.

직접 덱을 구현할 수 도 있고, STL을 사용해도 되는 문제였고 귀찮아서 그냥 STL을 사용했다.

push_back(), push_front() 함수가 STL에 구현되어있는 함수와 조금 다르므로 조심해야한다.

계속 틀렷다길래 자세히 봤더니...ㅠㅠ

 

문제 구현 자체는 엄청 쉬우니 소스코드로 대체한다.

 

 

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
#include <iostream>
#include <deque>
#include <cstring>
 
using namespace std;
 
int main() {
    deque<int> d;
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        string order;
        cin>>order;
        if(order=="push_back"){
            int a;
            scanf("%d",&a);
            d.push_back(a);
        }
        else if(order=="push_front"){
            int a;
            scanf("%d",&a);
            d.push_front(a);
        }else if(order=="pop_front"){
            if(d.size()==0) {
                printf("-1\n");
            }else{
                printf("%d\n",d.front());
                d.pop_front();
            }
        }else if(order=="pop_back"){
            if(d.empty()) printf("-1\n");
            else{
                printf("%d\n",d.back());
                d.pop_back();
            }
        }else if(order=="size"){
                printf("%d\n",d.size());
        }else if(order=="empty"){
            if(d.empty()) 
                printf("1\n");
            else 
                printf("0\n");
        }else if(order=="front"){
            if(d.empty()) 
                printf("-1\n");
            else printf("%d\n",d.front());
        }else{
            if(d.empty()) printf("-1\n");
            else printf("%d\n",d.back());
        }
    }
}
cs