Notice
Recent Posts
Recent Comments
Link
궤도
[백준] 10866번 : 덱 본문
문제
풀이
덱(deque)을 풀어쓰면 double ended queue이다. 그니까 앞뒤로 접근 가능한 큐라는 건데 빨대라고 생각하면 되겠다.
www.cplusplus.com/reference/deque/deque/?kw=deque
풀이
#include <iostream>
#include <deque>
#include <string>
using namespace std;
int main() {
cin.tie(NULL);
ios_base::sync_with_stdio(false);
deque <int> dq;
int N, num;
string input;
cin >> N;
for (int i = 0; i < N; i++) {
cin >> input;
if (input.compare("push_front") == 0) {
cin >> num;
dq.push_front(num);
}
else if (input.compare("push_back") == 0) {
cin >> num;
dq.push_back(num);
}
else if (input.compare("pop_front") == 0) {
if (dq.empty())
cout << -1 << '\n';
else {
num = dq.front();
cout << num << '\n';
dq.pop_front();
}
}
else if (input.compare("pop_back") == 0) {
if (dq.empty())
cout << -1 << '\n';
else {
num = dq.back();
cout << num << '\n';
dq.pop_back();
}
}
else if (input.compare("size") == 0)
cout << dq.size() << '\n';
else if (input.compare("empty") == 0)
cout << dq.empty() << '\n';
else if (input.compare("front") == 0) {
if (dq.empty())
cout << -1 << '\n';
else {
num = dq.front();
cout << num << '\n';
}
}
else if (input.compare("back") == 0) {
if (dq.empty())
cout << -1 << '\n';
else {
num = dq.back();
cout << num << '\n';
}
}
}
}
이번에도 간단하게 함수만 정리하고 끝내겠다.
#include <deque> //덱을 사용하기 위한 헤더
deque<int> dq //int형 덱 dq선언
dq.push_front(1) //덱 dq의 맨 앞에 1투입
dq.push_back(1) //덱 dq의 맨 뒤에 1투입
dq.pop_front() //덱 dq의 맨 앞 값 뺌
dq.pop_back() //덱 dq의 맨 뒤 값 뺌
dq.front() //덱 dq의 맨 앞 값 반환
dq.back() //덱 dq의 맨 뒤 값 반환
dq.size() //덱 dq의 크기 반환
dq.empty() //덱 dq가 비어있는지 아닌지 확인
Comments