Algorithm Practice/[ Baekjoon ]
[Baekjoon][#10866] 덱(Deque)
Meng's Computer
2020. 9. 24. 01:07
- [ 장르 ] Deque
- [ 문제 ]
10866번: 덱
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 ��
www.acmicpc.net
- My Code
#include <iostream>
#include <deque>
using namespace std;
int main()
{
cin.tie(NULL); cout.tie(NULL); ios_base::sync_with_stdio(false);
int opcnt,i = 0,data;
string str;
deque<int> que;
cin >> opcnt;
while (i < opcnt)
{
cin >> str;
if (!str.compare("push_back"))
{
cin >> data;
que.push_back(data);
}
else if (!str.compare("push_front"))
{
cin >> data;
que.push_front(data);
}
else if (!str.compare("front"))
{
if (que.empty()) cout << -1 << '\n';
else cout << que.front() << '\n';
}
else if (!str.compare("back"))
{
if (que.empty()) cout << -1 << '\n';
else cout << que.back() << '\n';
}
else if (!str.compare("pop_front"))
{
if (que.empty()) cout << -1 << '\n';
else
{
cout << que.front() << '\n';
que.pop_front();
}
}
else if (!str.compare("pop_back"))
{
if (que.empty()) cout << -1 << '\n';
else
{
cout << que.back() << '\n';
que.pop_back();
}
}
else if (!str.compare("size"))
cout << que.size() << '\n';
else
cout << que.empty() << '\n';
i++;
}
return 0;
}
[ CheckPoint ]
- 기본적인 Deque기능문제이다. C++은 Deque Container가 있기 때문에 deque연산을 쉽게 할 수 있다.
- Deque는 일반 queue와 달리 queue는 FIFO( First In First Out )으로
들어가고 나가는 방향이 하나로, 보통 front, rear(back)으로 연산을 진행한다. 먼저 들어간 정보가 나올때도 가장 먼저 나간다.- Deque는 들어가고 나가는 방향이 양방향이다. front,back 두 방향에서
연산이 가능하다.
728x90
반응형