정수를 저장하는 덱(Deque)를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.
명령은 총 여덟 가지이다.
- push_front X: 정수 X를 덱의 앞에 넣는다.
- push_back X: 정수 X를 덱의 뒤에 넣는다.
- pop_front: 덱의 가장 앞에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
- pop_back: 덱의 가장 뒤에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
- size: 덱에 들어있는 정수의 개수를 출력한다.
- empty: 덱이 비어있으면 1을, 아니면 0을 출력한다.
- front: 덱의 가장 앞에 있는 정수를 출력한다. 만약 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
- back: 덱의 가장 뒤에 있는 정수를 출력한다. 만약 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
<STL정리>
큐와 스텍은 같은 pop, push함수를 사용하지만 기능이 다름. 그리고
스택은 top만 존재, 큐는 front, back 전부 존재.
덱은 pop과 push에 구분이 있음 _front, _back.
vector은 push_back과 insert 존재하고 pop_back, push_back.
#include <iostream>
#include <deque>
#include <string>
using namespace std;
int main(void)
{
deque <int> de;
string name;
int N;
cin>>N;
for( int i=0; i<N; i++)
{
cin>>name;
if(name == "push_front")
{
int x;
cin >> x;
de.push_front(x);
}
else if(name == "push_back")
{
int x;
cin >> x;
de.push_back(x);
}
else if(name == "pop_front")
{
if(!de.empty())
{
cout<<de.front()<<endl;
de.pop_front();
}
else {cout << -1<<endl;
}
}
else if(name == "pop_back")
{
if(!de.empty())
{
cout<<de.back()<<endl;
de.pop_back();
}
else {cout << -1<<endl;
}
}
else if(name == "size")
{
cout<<de.size() << endl;
}
else if(name == "empty")
{
if(de.empty()){
cout << 1 << endl;
}
else{
cout << 0<<endl;
}
}
else if( name == "front")
{
if(!de.empty()){
cout <<de.front()<<endl;
}
else{
cout << -1 <<endl;
}
}
else if( name == "back")
{
if(!de.empty()){
cout <<de.back()<<endl;
}
else{
cout << -1 <<endl;
}
}
}
}
'Algorithm' 카테고리의 다른 글
백준 2562번 최대값 (0) | 2019.07.02 |
---|---|
백준 1100번 하얀칸 (0) | 2019.07.01 |
백준 10821번 정수의 개수 (0) | 2019.07.01 |
백준 10845번 큐 (0) | 2019.06.30 |
백준 10828번 스택 (0) | 2019.06.29 |