BOJ 문제풀이

백준 10866번 c++ 풀이

koreasunoo 2021. 8. 6. 12:33

안녕하세요 오늘은 덱(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();
			}
		}
	}
}

'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