반응형
백준: 덱
난이도: 실버4
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <stack>
#include <deque>
#include <queue>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
string str;
deque<int> dq; //deque 선언
int n;
int temp;
cin >> n; //명령의 수 입력
for (int i = 0; i < n; i++) //명령의 수만큼 반복
{
cin >> str; //명령입력
if (str=="push_front") //push_front는 deque의 front에 데이터를 추가
{
cin >> temp;
dq.push_front(temp);
}
else if (str == "push_back") //push_back는 deque의 back에 데이터를 추가
{
cin >> temp;
dq.push_back(temp);
}
else if (str == "pop_front") //pop_front는 deque의 가장앞에 있는데이터를 삭제
{
if (dq.empty())
cout << -1 << "\n";
else
{
cout << dq.front() << '\n';
dq.pop_front();
}
}
else if (str == "pop_back") //pop_back는 deque의 가장뒤에 있는데이터를 삭제
{
if (dq.empty())
cout << -1 << "\n";
else
{
cout << dq.back() << '\n';
dq.pop_back();
}
}
else if (str=="size") //deque의 정수의 개수 반환
cout << dq.size() << '\n';
else if (str == "empty") //deque가 비었는지 확인
{
if (dq.empty())
cout << 1 << '\n';
else
cout << 0 << '\n';
}
else if (str == "front") //가장앞에 데이터 반환, 삭제는하지않는다
{
if (dq.empty())
cout << -1 << '\n';
else
cout << dq.front() << '\n';
}
else if (str == "back") //가장뒤에 있는 데이터 반환, 삭제는하지않는다
{
if (dq.empty())
cout << -1 << '\n';
else
cout << dq.back() << '\n';
}
}
return 0;
}
반응형
'Programming > Baekjoon' 카테고리의 다른 글
백준 10820 c++ (0) | 2022.01.21 |
---|---|
백준 11656 c++ (0) | 2022.01.20 |
백준 10845 c++ (0) | 2022.01.20 |
백준 10828 c++ (0) | 2022.01.19 |
백준 11651 c++ (0) | 2022.01.18 |