본문 바로가기
Baekjoon/[Code.plus] 알고리즘 기초 1/2

[BOJ/백준] 10866 덱

by 해적거북 2021. 7. 26.
728x90

● [문제번호 10866] 덱

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

 

10866번: 덱

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

 

● 알아야 할 것

: deque 자료구조와 메소드

 

● 풀이 과정

: deque 자료구조와 메소드 사용을 묻는 간단한 문제

 

● 주의 할 것

: pop_front(), pop_back() 연산은 반환값이 없으므로 (출력 후 삭제)로 작업

 

● 참고 할 것

: NULL

 

● 풀이 코드

#include <bits/stdc++.h>

using namespace std;

deque<int> d;
string cmd;
int N, X;


int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    
    cin >> N;
    
    for(int n = 0; n < N; n++)
    {
        cin >> cmd;
        
        if(cmd == "push_front")
        {
            cin >> X;
            
            d.push_front(X);
        }
        else if(cmd == "push_back")
        {
            cin >> X;
            
            d.push_back(X);
        }
        else if(cmd == "pop_front")
        {
            if(d.empty())
                cout << -1 << "\n";
            // pop 연산은 반환이 없으므로 (출력 후 삭제)로 작업
            else
            {
                cout << d.front() << "\n";
                d.pop_front();
            }
        }
        else if(cmd == "pop_back")
        {
            if(d.empty())
                cout << -1 << "\n";
            // pop 연산은 반환이 없으므로 (출력 후 삭제)로 작업
            else
            {
                cout << d.back() << "\n";
                d.pop_back();
            }
        }
        else if(cmd == "size")
        {
            cout << d.size() << "\n";
        }
        else if(cmd == "empty")
        {
            if(d.empty())
                cout << 1 << "\n";
            else
                cout << 0 << "\n";
        }
        else if(cmd == "front")
        {
            if(d.empty())
                cout << -1 << "\n";
            else
                cout << d.front() << "\n";
        }
        else if(cmd == "back")
        {
            if(d.empty())
                cout << -1 << "\n";
            else
                cout << d.back() << "\n";
        }
    }
    
    return 0;
}

 

 

● [백준] - [알고리즘 기초 1/2] - [200 - 자료구조 1] 문제집

번호 문제 번호 문제 이름 풀이 링크
1 10828 스택 https://pirateturtle.tistory.com/153
2 9093 단어 뒤집기 https://pirateturtle.tistory.com/154
3 9012 괄호 https://pirateturtle.tistory.com/155
4 1874 스택 수열 https://pirateturtle.tistory.com/156
5 1406 에디터 https://pirateturtle.tistory.com/158
6 10845 https://pirateturtle.tistory.com/161
7 1158 요세푸스 문제 https://pirateturtle.tistory.com/162
8 10866 https://pirateturtle.tistory.com/164

 

728x90

댓글