SMALL
안녕하세요 오늘은 덱(deque)의 함수를 입력받고 그에따른 행동을 해야하는 문제를 풀어보겠습니다. stl container에는 deque를 지원하기때문에 구현이 어려운게 단점이 deque의 단점을 보완할 수 있습니다.
전략:
1. deque를 선언해주고(deque<int> dq), for문을 이용하여 string타입으로 변수 x를 N번 입력을 받아줍니다.
2. 입력받은 x의 문자를 비교하여 push_back인지, push_front인지, front인지 등등확인해줍니다. dq.size()가 0이면 -1을 출력해야하는 것에 주의해야합니다.
코드:
#include <bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
deque<int> dq;
int N;
cin>>N;
for(int i= 0; i<N; i++){
string x;
cin>>x;
if(x=="push_back"){
int num;
cin>>num;
dq.push_back(num);
}
else if(x=="push_front"){
int num;
cin>>num;
dq.push_front(num);
}
else if(x=="front"){
if(dq.size() == 0){
cout<<"-1"<<"\n";
continue;
}
else cout<<dq.front()<<"\n";
}
else if(x=="back"){
if(dq.size() == 0){
cout<<"-1"<<"\n";
continue;
}
else cout<<dq.back()<<"\n";
}
else if(x=="empty"){
cout<<dq.empty()<<"\n";
}
else if(x=="size"){
cout<<dq.size()<<"\n";
}
else if(x=="pop_front"){
if(dq.size()==0){
cout<<"-1"<<"\n";
}
else{
cout<<dq.front()<<"\n";
dq.pop_front();
}
}
else if(x=="pop_back"){
if(dq.size()==0){
cout<<"-1"<<"\n";
}
else {
cout<<dq.back()<<"\n";
dq.pop_back();
}
}
}
}
LIST
'BOJ 문제풀이' 카테고리의 다른 글
백준 10816번 c++ 풀이 (0) | 2021.08.06 |
---|---|
백준 10828번 c++ 풀이 (0) | 2021.08.06 |
백준 2164번 c++ 풀이 (0) | 2021.08.06 |
백준 10845번 c++ 풀이 (0) | 2021.08.06 |
백준 11050번 c++ 풀이 (0) | 2021.08.05 |