
문제 풀이
- 덱 DEQ 는 double ended queue의 약자이다.
- 큐에서 front의 값들을 뺄 수 있었다면, deq은 뒤에도 넣고 뺄수 있는 구조이다.
- 잘 사용하지는 않는 구조라 생소했지만 이번 기회를 통해서 정리할 수 있었다.
- sdt::deque 의 주요 함수들
1. emplace_front
- pop_front
- emplace_back
- pop_back
C++ 코드
#include <iostream>
#include <deque>
using namespace std;
int main() {
deque <int> d;
string s;
int n;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> s;
if (s.compare("push_front") == 0) {
int x;
cin >> x;
d.push_front(x);
}else if (s.compare("push_back") == 0) {
int x;
cin >> x;
d.push_back(x);
}
else if (s.compare("pop_front") == 0) {
if (d.empty())
cout << "-1\n";
else {
cout << d.front() << "\n";
d.pop_front();
}
}else if (s.compare("pop_back") == 0) {
if (d.empty())
cout << "-1\n";
else {
cout << d.back() << "\n";
d.pop_back();
}
}
else if (s.compare("size") == 0) {
cout << d.size() << "\n";
}
else if (s.compare("empty") == 0) {
if (d.empty() == true)
cout << "1\n";
else
cout << "0\n";
}
else if (s.compare("front") == 0) {
if (d.empty())
cout << "-1\n";
else
cout << d.front() << "\n";
}
else if (s.compare("back") == 0) {
if (d.empty())
cout << "-1\n";
else
{
cout << d.back() << "\n";
}
}
}
return 0;
}