[백준 10866번 C++] 덱
https://www.acmicpc.net/problem/10866
10866번: 덱
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
덱.. 덱에 대해 알아보자
https://travelbeeee.tistory.com/60
[C++] 덱 자료구조 & STL Deque Library 기본 명령어 정리
안녕하세요, 여행벌입니다. 오늘은 자료구조 덱과 덱을 지원해주는 C++ STL deque library에 대해서 알아보겠습니다. 1. Deque(덱)이란? Double-ended Queue의 약자로 Queue에 양쪽에서 삽입, 삭제가 다 이뤄질
travelbeeee.tistory.com
Deque은 Double-ended Queue의 약자!
큐와 거의 비슷한데, 큐는 앞에서 pop, 뒤에서 push를 한다면
덱은 앞뒤에서 삽입, 삭제가 모두 이뤄질 수 있다
덱 또한 #include <deque>을 통해서 라이브러리를 불러올 수 있다
<deque>의 메서드를 살펴보면
스택, 큐와 비슷하지만, 앞뒤 삽입 삭제를 구분해줘야하기 때문에 방향마다 두개씩 존재함!
- dq.push_front(ele);
- dq.push_back(ele);
- dq.pop_front();
- dq.pop_back();
큐와 동일하게 front, back의 원소를 출력할 수 있음
- dq.front();
- dq.back();
큐, 스택과 동일하게 empty와 size를 출력할 수 있음
- dq.empty();
- dq.size();
#include <iostream>
#include <queue>
#include <string>
using namespace std;
int main()
{
cin.tie(NULL);
cin.sync_with_stdio(false);
int n, m;
string s;
cin >> n;
deque<int> dq;
for(int i=0; i<n; i++){
cin >> s;
if(s == "push_front"){
cin >> m;
dq.push_front(m);
}
else if(s == "push_back"){
cin >> m;
dq.push_back(m);
}
else if(s == "pop_front"){
if(dq.empty()) cout << "-1\n";
else {
m = dq.front();
cout << m << "\n";
dq.pop_front();
}
}
else if(s == "pop_back"){
if(dq.empty()) cout << "-1\n";
else {
m = dq.back();
cout << m << "\n";
dq.pop_back();
}
}
else if(s == "size"){
cout << dq.size() << "\n";
}
else if(s == "empty"){
if(dq.empty()) cout << 1 <<"\n";
else cout << "0\n";
}
else if(s == "front"){
if(dq.empty()) cout << "-1\n";
cout << dq.front() << "\n";
}
else if(s == "back"){
if(dq.empty()) cout << "-1\n";
cout << dq.back() << "\n";
}
}
return 0;
}
예시 1은 출력이 잘 됐는데, 예시 2는 출력해보면 core dumped 오류가 떴다
???
아직 못 고침
왜 틀린지 모르겠음